- 论坛徽章:
- 0
|
回复 28# starwing83
大侠不敢.
那个环境确实有一些细节, 也确实有麻烦的地方. 但是总归来说, 并不是太复杂. 说是一个“操作系统”, 实际上是一个bootLoader来的, 而且没有u-boot那么复杂(u-boot还是比较麻烦的).
它确实是在裸板上运行的, bootStage也是平台相关(现在的ARM CPU里面都内置一个SDRAM, 4 - 8K不等. 最先这个程序要加载到SDRAM里面运行, 然后初始化DRAM也就是内存, 之后它将自己拷贝到DRAM, 然后才在DRAM上运行. 要点是设置栈起始点(这个必须要用汇编, C做不到. 就是指定一个物理地址给sp寄存器, ARM上面是r13). 在8K SDRAM上运行的时候栈的起始点就是8K那里). 然后各种初始化...
在这个阶段, MMU没开, 所有的操作都是直接对物理内存操作(C怎么写怎么用. 所有的ARM板说明书上都会说明它那些BANK是可以用的, 也就是它会标识出, 内存物理地址从哪个BANK开始, BANK多大, 有几个BANK. 这时没有虚存抽象, 定什么地址就是什么地址). 代码是一套, 针对特定ARM板, 由我的同事们积累起来的, 现在已经基本完善(当然达不到商业化的程度, 别忘记u-boot. 但是想想这些代码是一个人可以垒起来然后基本能控制到所有细节, 还是比较令人兴奋的).
不过这离内核还远, 和Linux内核基本要算是两码事...
|
|