实时操作系统 echronos hello world

网上关于这个实时操作系统的资料十分地少。主要是因为这个操作系统开源的项目不出名吧,比起nuttx拥有PX4这个已经经过长期验证的飞控,echronos开源的飞控SMACCMPilot就显得十分冷门了。但是吸引我的一点是,这个操作系统十分安全。号称这个世界上最安全的操作系统seL4也是基于这个实时操作系统。而我注重的是,用户任务崩溃不会影响系统任务崩溃。这是个十分有意思的特性,即便我最后不选择这个操作系统,echronos的内存管理方式也值得我借鉴。

首先https://github.com/echronos/echronos从git上clone下来这个操作系统的源码。我目标是把它下载到我的stm32F407VET6的板子上。我发现echronos支持的板子少的可怜,幸好支持f4discovery,跟我用的芯片类似而且使用的也是8M的时钟。

虽然没有这个板子的官方教程,但是根据readme的例子,我决定依葫芦画瓢模仿一下。

这里使用了模拟器,既然我有板子就不用模拟器了,把原文这句话改为

prj/app/prj.py build machine-qemu-simple.example.gatria-system

prj/app/prj.py build machine-stm32f4-discovery.example.blinky-system 

machine-stm32f4-discovery.example.blinky-system可以看做machine-stm32f4-discovery/example/blinky-system 是packages下的文件目录,我不知道为什么要写成这样,这里 . 和 / 的作用是一样的

接下来原文就直接上机调试了

# Run the generated system in qemu (press `ctrl-c` to close QEMU after it is finished)
qemu-system-arm -M lm3s6965evb -nographic -semihosting -S -s --kernel out/machine-qemu-simple/example/gatria-system/system

# To connect and view debug output run gdb in another shell prompt
arm-none-eabi-gdb -ex "target remote :1234" out/machine-qemu-simple/example/gatria-system/system
(gdb) b fn_a
Breakpoint 1 at 0x800065c: file packages/rtos-example/gatria-test.c, line 41.
(gdb) c
Continuing.

Breakpoint 1, fn_a () at packages/rtos-example/gatria-test.c:41
41	{
(gdb) n
43	    rtos_unblock(0);
(gdb) n
44	    rtos_unblock(1);
(gdb) c
Continuing.
task a -- lock
task b -- try lock
task a -- unlock
...

根据第一句我们发现,其实生成的文件在out文件夹下,我们找到了这个文件夹out/machine-stm32f4-discovery/example/blinky-system 我们发现下面有一个system,这个就是可执行文件了,然后按照一般的流程进行调试就好了。

https://blog.csdn.net/zhengyangliu123/article/details/54934719

这篇文章把如何在ubuntu下进行gdb调试说的蛮清楚的。

猜你喜欢

转载自blog.csdn.net/qq_21856675/article/details/82779428