在arm上做linux开发,貌似只要把linux系统移植进去就,剩下的开发就不难了....

在arm上做linux开发,貌似只要把linux系统移植进去就,剩下的开发就不难了....,第1张

如果你水平很高,那确实就是这样。移植进去就成,开发就随便用用系统提供的功能就好了。

但是你水平不高的话,你就会觉得困难,因为首先移植就有很多问题,不懂得话,能移植,不工作的地方不好追,不好修补。移植好了不知道怎么用,能用的话不知道有没有用对,出了问题不知道是系统问题还是你嵌入的程序段问题。

那你要水平高的话,你需要会什么呢?需要对unix/linux有了解,熟悉Arm架构,熟悉嵌入式开发,尤其要熟悉跟踪调试,要熟悉 *** 作系统的知识,要熟悉调度和硬中断,就是熟悉计算机结构,要熟悉C/C++,要知道一点汇编,要知道一点硬件知识(数字电路方面),要熟悉文件系统和SD接口,USB接口,要熟悉Arm的各种外设接口。

然后linux开发,你要熟悉临界段,你要熟悉互斥,任务,要熟悉上下半部分中断,要熟悉邮箱,要熟悉信号量,要熟悉优先级等等等等。。

多么?其实列的还不算全,你还要熟悉算法,可重用架构,系统设计方面等等。。。

唉。。。所以说难者不会,会者不难,就是这个样子。

ARM

分好几个系列,几十种版本!所有ARM系列都可以选择象单片机一样的开发裸机程序,大部分也可以装一个系统。在ARM平台使用的系统有:wince、linux、uclinux、rtems、rt-thread、ecos、freertos、ucosii等等,其中wince和linux都需要在含有MMU硬件的ARM上才能运行。并且,rtems、rt-thread、ecos、freertos、ucosii都属于实时 *** 作系统(RTOS)。

Cortex-M3,Cortex-M1,Cortex-M0就是ARM推出用来代替8bit单片机的一个版本,典型的芯片有STM32FXXX系列,AT91SAM3系列,LPC1XXX系列等等,都可以象单片机一样开发,也可以使用RTOS系统。

使用系统的目的,其实就是为了更好的、更合理的分配系统资源,让用户无需在资源分配上花费精力,以便用户能投入更多的时间在实际的产品程序设计上!

开发板上电第一步是启动固件,固件是出厂时固化好的,固件的作用是初始化一下基本的 设备,以nand为例,固件irom初始化好sram后,将nand中的前4k的bootloader(一般为uboot)拷贝到sram中,sram再初始化另一些设备比如dram等等,然后运行剩下的bootloader,接下来就是引导linux内核的启动了。bios在开发板相当与irom部分功能和uboot的前4k,内存时钟会在uboot中初始化的。uboot先做一些准备(比如设svc模式,关看门狗、中断、mmu等),然后设置内核参数表,然后跳到内核的地址运行,内核一般是压缩的,需要先解压,入口是stext,是在arch/arm/kernel/vmlinux.lds.S中定义的


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7515536.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-06
下一篇2023-04-06

发表评论

登录后才能评论

评论列表(0条)

    保存