主要改动:
1. 从XBOOT剥离出来基本ARCH和Machine的boot代码以及Makefile
2. 修改了mksunx tool,解决了文件小于0x3C00时的BROM checksum错误。
3. 修改link文件增加bootloader section,修改start.S自动计算启动代码长度,这样只加载bootloader到RAM,加快启动
3. 把UART0 TX/RX改为GPIOE1 and GPIOE0, 方便调试Todo:
1. 增加GPIO,PWM和中断支持,已经有网友实现了,准备加进来
2. 从XBOOT主线同步最新启动代码,主线已经增加了MMU支持(打开I、DCache),并且对启动代码优化了速度用法:
1. 首先编译mksunxi:make mktool 或者 cd tools/mksunxi && make
2. 编译firmware.bin: make
3. 烧到SPI flash:make write我遇到的最大的坑是,原来BROM里填的固定加载0x3C00长度,而我的minimal代码总共才1xxx bytes,导致checksum错误。后来用官方的mksunxiboot工具,虽然可以识别BROM但是,一跳到DRAM执行main就reset。一看代码,有个DRAM检查0x5C位置的信息,不知道为什么要检查这个,但估计是mksunxiboot没处理这个导致DRAM没有初始化好。最后还是用xboot的mksunxi改了下终于好了。
另外发现SRAM代码跑得很慢,加载几k代码到RAM用了1xxms,虽然是3M的clock但是发现有很多间隔;后来copy SPI全部代码到DRAM,50M时钟也用了几MS,也有很多等待,平均只有1/3的有效速度。XBOOT似乎发现这个问题,有了更新,我准备试一试。
最近想撸f1c100s,看了些相关大神们的贴,怎么xboot的f1c100s.ld里的ram首址不是0x1 0000呢,而是0x80000000,DRAM不是要SRAM运行的程序来初始化后才能用的么,想把它当单片机用。