tanek
tanek
This guy hasn't written anything yet

注册于 7 years ago

回答
0
文章
0
关注者
0

目录是错的? 怎么样的错误?

更具体是什么类型的编译器,gcc? llvm? mdk? iar?

一部分是基础关键字的适配,这个在rtdef.h里面。

一部分是libc和posix的适配,这个得看你用的编译器的libc是如何实现的,posix原来支持了多少,rtt这边会补全一些接口。一般来说,现在gcc有newlib和rtt自己的minilib支持。mdk和iar也已经做好了相应的适配。具体实现可以 看components\libc\compilers 目录。

在rt_thread_exit()里面删除,

这个函数在线程创建的时候,初始化线程栈的时候,就把这个函数保存好了。例如在cortex-m里,就是保存到lr寄存器里。

在线程的entry函数返回的时候,就是返回到rt_thread_exit里

我把这个功能加入到systemview里面了,可以和systemview一起使用。

我也尝试在不支持中断模式下,使用shell。

是基于IDLE HOOK来做的。在serial的control接口里,有开关中断的配置。

对应的打开中断就是注册hook,关闭中断就是删除hook。需要注意的问题是有可能会重复配置,需要处理一下。

具体实现在这里

这个我也不是很清楚,等其他人回答吧。

支持C++,不是说现有的代码可以在C++直接编译通过,而是用户代码可以用C++来写。

说明这个bsp不支持mdk,或者还没做mdk的支持。
具体到beaglebone,它应该是Cortex-A8的,ARM v7架构,所以mdk不支持的

是的。
我喜欢从内存的角度理解。

struct rt_thread xxx 是一个结构体变量,大小就是结构体rt_thread的大小。如果我们定义了这样的变量就会有相应的内存。

rt_thread_t xxx 是一个 结构体的指针,大小就是机器长度,32bit的mcu就是32bit。

然后create和init的区别是,create会动态申请一块内存,这个内存大小等于struct rt_thread,
然后就把这块内存当作一个struct rt_thread来用。函数最后返回这块内存的指针。

CMSIS其实是ARM那边一个比较大的概念,包含了挺多的不同的模块。

最常用的就是一套头文件,屏蔽了cortex m的一些差异。还有它的rtos接口层,rtt这边对接了一部分。

gcc对.s和.S的处理有细微差异,后者可以使用c的宏,功能更强,推荐后者。

看具体bsp,有些bsp没做c++的支持,但是可以参考那些做好的来修改。

回到
顶部

发布
问题

投诉
建议