下一页 上一页 目录

5. 编译和执行

为了执行程序 hello.c,(当然是在启动 rtlinux 之后),您必须执行以下操作

  1. 使用 GCC 编译器编译源代码并创建模块。为了简化操作,最好创建一个 Makefile 文件。这样您只需要输入 'make' 即可编译代码。可以通过在一个名为 'Makefile' 的文件中输入以下行来创建 Makefile。
         include rtl.mk
         all: hello.o
         clean:
             rm -f *.o
         hello.o: hello.c
             $(CC) ${INCLUDE} ${CFLAGS} -c hello.c
    
  2. 找到 rtl.mk 文件并将其复制到与您的 hello.c 和 Makefile 相同的目录中。rtl.mk 文件是一个包含编译代码所需的所有标志的包含文件。您可以从 RTLinux 源代码树中复制它,并将其与 hello.c 文件放在一起。
  3. 要编译代码,请使用命令 'make'。
            $ make 
    
  4. 生成的对象二进制文件必须插入到内核中,然后它将由 RTLinux 执行。使用命令 'rtlinux'(您需要是 'root' 用户才能执行此操作)。
            $ rtlinux start hello
    

现在您应该能够看到您的 hello.o 程序每秒打印其消息。根据您的机器配置,您应该可以直接在控制台中看到它,或者通过输入

        $ dmesg

要停止程序,您需要将其从内核中移除。要做到这一点,请输入

        $ rtlinux stop hello

插入和移除模块的替代方法分别是使用 insmodrmmod

在这里,我们的示例程序过于简单。与我们所看到的相反,一个程序中可能存在多个线程。优先级可以在线程创建时设置或稍后修改。此外,我们可以选择应该使用的调度算法。实际上,我们可以编写自己的调度算法!

在我们的示例中,我们可以将线程的优先级设置为 1,并通过在函数 thread_code() 的开头插入以下行来选择 FIFO 调度

        struct sched_param p;
        p . sched_priority = 1;
        pthread_setschedparam (pthread_self(), SCHED_FIFO, &p);

下一页 上一页 目录