:Linux是否能在8位MCU上运行?( 三 )


源代码?
这个代码有点儿乱 , 但是它可以工作(代码国内无法下载) 。要在PC上建立仿真器并进行尝试输入“make” 。要运行使用“./uARM DISK_IMAGE” 。要建立优化的PC版本使用“make BUILD=opt” 。要建立AVR运行的版本使用“make BUILD=avr” 。现在 , 它的编译目标是ATmega1284P 。要以ATmega644为编译目标 , 除了要修改makefile , 减少icache.h中的数字以便于i-cache足够小来配合644内部的RAM 。在归档文件中还包括用于1284p最终的hex文件 。
启动过程
要在AVR中保留代码空间 , 几乎没有启动代码存在于仿真器中 。事实上 , “ROM”总共50字节:8字节用来选择Thumb模式 , 一些Thumb代码要读取SD卡的第一个扇区并跳到Thumb模式(参看embeddedBoot.c) 。SD卡的MBR有另一个bootloader(在Thumb模式下写入) 。这个bootloader看着MBR , 找到活动分区并加载它的内容到RAM的末尾 。然后 , 它跳到目的RAM地址+512(参看mbrBoot.c) 。这里运行着第三个 , 也是最大的bootloader , ELLE(参看ELLE.c) 。这个bootloader重新定位了ramdisk , 建立ATAGS , 并调用内核 。我提供了所有的二进制文件和源代码以便于大家能够按照意愿制作您自己镜像 。启动过程会让人回忆起PC开机 。:)包含的mkbooting.sh工具可以用来制作用于启动分区的工作镜像 。
明材料确认版权并支付稿酬或者删除内容 。


推荐阅读