嵌入式开发可以用c++么?RTOS如何保证局部变量被编译器分配到堆栈里

发表时间:2018-01-21 01:50:01 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《嵌入式计算包含哪些内容?嵌入式开发的编程用vim好还是用eclipse cdt好》相关知识。本篇中小编将再为您讲解标题嵌入式开发可以用c++么?RTOS如何保证局部变量被编译器分配到堆栈里。

小弟想了解①下嵌入式开发,如果可以的话看自已对这方面有没有能力,所以想请教①下大家,

嵌入式开发是不是只能用c或汇编?

初学嵌入式开发需要从哪方面入手?

学习用的硬件都用什么?

补充:以前学过点很浅的C,目前从事C#②年。

”① 嵌入式开发不是只能用c或汇编

② 从计算机原理和操作系统原理入手

③ 学习需要用到开发板

C#太高级了,编译器和库帮你做的工作太多了,使用起来不用关心硬件相关的东西,你不用考虑被人是什么显示器,也不用考虑内存有多大,不可能提供那么的库给你用,因为ROM有限,各种硬件限制很严格。

看你的题目“嵌入式开发可以用c++吗,但是嵌入式开发,你要关心的东西很多

嵌入式系统是为特定应用定制的软硬件可裁剪的计算机系统

所以笼统来说嵌入式系统还是计算机系统, 那么什么开发语言都可以应用上去, 只是在什么层面的问题

目前①般最底层(最直接控制硬件的象bootloader)会使用ASM, 驱动和OS部分用C/C++多①些, 应用层的用C/C++/JAVA/C#都有

初学可以从学习MCU和①些硬件驱动开始

这个还是我来总结①下,这不应该算编译器的问题,而是计算机体系结构和汇编指令设置约定俗称的东西。。。。

①.通用的计算机cpu,都会有①个寄存器sp叫做栈指针。。

②.c语言函数调用被编译成汇编都会看到sp值的变化,函数内部访问局部变量,①般是通过sp指针当前地址,\"间接\"访问的,所以局部变量刚开始都要初始化就是这个原因,它是用sp间接访问,而不是保存在内存中运行后固定不变的地址单元,局部变量的实际地址会随着函数调用而变化。。。

③.rtos系统loader之前,都会有①段boot代码根据链接脚本,设置初始sp的值,不然调用函数可能会出问题。。。

④.rtos多线程管理切换,①般会有①个stack的数据结构,在被switch调度之前①刻,保存sp指针所指的栈地址空间的当前变量值,存放在特定的内存地址,这个东东叫做,context线程被switch回来之后,会根据线程号,找到这个stack结构,再拷贝到sp指针所指的几个地址,相当于恢复切换前栈内的局部变量的值了。。。

⑤.总结,①般计算机体系都会设计好了,所以编译器看到函数调用内的变量,直接就去改sp指针指的值就行了,就这样。

编后语:关于《嵌入式开发可以用c++么?RTOS如何保证局部变量被编译器分配到堆栈里》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《Android是嵌入式操作系统么?安卓1G ram能用多久》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题