主要改动:
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似乎发现这个问题,有了更新,我准备试一试。
本站下载: minmal_f1c100s.zip
最近编辑记录 达克罗德 (2018-07-13 10:13:52)
离线
厉害厉害,感谢分享!
离线
感谢分享!
离线
牛逼,强啊
在线
加了MMU的支持,开cache,并把拷贝代码放到DRAM,使得image从SPI复制到DRAM时间减少到原来的60%。但是最初从SPI加载boot代码到SRAM这个时间400ms,实在是太慢了,谁知道怎么减少这个时间。。。
我裸奔就是想实现快速启动系统,如果这加载时间就这么长,那还不如直接上Linux。。。
离线
感谢分享!学习学习。
离线
这帖子可以呀,求大神QQ号
离线
这帖子可以呀,求大神QQ号
我平常不上Q呀,有什么问题在论坛提出来,大家都可以帮忙
离线
我调了两个月裸机串口 一直直接用论坛的串口驱动代码 后来想了一下不对啊 忐忑了一下 会不会引脚不一样啊 结果一看...
离线
我调了两个月裸机串口 一直直接用论坛的串口驱动代码 后来想了一下不对啊 忐忑了一下 会不会引脚不一样啊 结果一看...
哈哈,刚拿到板子时我也是死活看不到串口打印,直到看进去code才发现
离线
@达克罗德
此款的环境是怎样的?需要安装哪些软件?
离线
和 xboot 一样, ubuntu 下装好 arm-*-linux-gcc, 然后执行make 即可生成bin。
离线
晕哥说得对
离线
太优秀了,只有70个文件.
离线
ubuntu执行:
sudo apt-get install gcc-arm-none-eabi
修改 Makefile
CROSS_COMPILE = arm-eabi-
改为
CROSS_COMPILE ?= arm-eabi-
编译:
CROSS_COMPILE=arm-none-eabi- make
离线
里面还有好多文件是不必要的,还可以精简
离线
刚刚烧录进去, 串口接上 PE0, PE1, 满屏都是 AAA, 还以为我的串口坏了。
重烧了几次还是一样,
打开 main.c 源码一看,原来是这样:
#include <stdint.h>
#include <stdio.h>
#include <string.h>
extern void sys_uart_putc(char c);
int boot_main(int argc, char **argv) {
while(1)
{
sys_uart_putc('A');
}
return 0;
}
离线
https://whycan.cn/files/members/3/QQ20180819194823.png
刚刚烧录进去, 串口接上 PE0, PE1, 满屏都是 AAA, 还以为我的串口坏了。
重烧了几次还是一样,
打开 main.c 源码一看,原来是这样:
#include <stdint.h> #include <stdio.h> #include <string.h> extern void sys_uart_putc(char c); int boot_main(int argc, char **argv) { while(1) { sys_uart_putc('A'); } return 0; }
这是刚能跑时的代码,带PWM,GPIO和Framebuffer驱动的是另一个帖子里有上传
离线
可以在 main.c 点亮屏幕吗?
离线
可以在 main.c 点亮屏幕吗?
https://whycan.cn/t_1457.html
这里的代码有main函数里直接亮屏的
离线
这个,太好了,非常感谢!
离线
用yagarto也可以吧,你这个代码应该没有涉及linux内核
离线
安装yagarto,使用命名控制台make
离线
受教了。谢谢
离线
大哥,你的mksunxi.c怎么编译呀?编译后是不是exe文件呀
离线
大哥,你的mksunxi.c怎么编译呀?编译后是不是exe文件呀
windows用mingw/msvc都可以
离线
谢谢!,搞好了
离线
说一下步骤吧,也可能后面有入坑的
windows下:
1.拷贝mingw到随便一个文件夹,记住路径...
2.在我的电脑右击......,设置环境变量(加入;.../bin)
3.打开控制台,输入gcc -v回车,如果显示mingw版本说明已经OK了
4.进入xxx.c文件目录
5.输入gcc xxx.c -o yyy回车,(yyy是生成exe文件的文件名)
6.到此yyy.exe便出现在xxx.c文件目录下
最近编辑记录 三哥 (2019-10-30 10:41:06)
离线
感谢 @三哥 分享心得。
离线
@三哥 这个exe文件用来干嘛的?
离线
@三哥 这个exe文件用来干嘛的?
给编译出来的 spl 加魔术头用的,
brom 会先检查魔术头, 合规才会继续加载 spl 到 ram
离线
gui401 说:@三哥 这个exe文件用来干嘛的?
给编译出来的 spl 加魔术头用的,
brom 会先检查魔术头, 合规才会继续加载 spl 到 ram
新手表示越来越蒙了,不是把生成的bin文件下载到flash就行了吗?还有spl又是什么东东?具体怎么操作呢?感觉我是不是跳过了一些入门贴。。。
离线
晕哥 说:gui401 说:@三哥 这个exe文件用来干嘛的?
给编译出来的 spl 加魔术头用的,
brom 会先检查魔术头, 合规才会继续加载 spl 到 ram
新手表示越来越蒙了,不是把生成的bin文件下载到flash就行了吗?还有spl又是什么东东?具体怎么操作呢?感觉我是不是跳过了一些入门贴。。。
这不是单片机那样直接从flash执行就可以。bin的头要放一些信息,让芯片内部的brom程序知道你需要加载多少代码去SRAM去执行。最终你是需要在dram中执行代码的,所以这段代码还得实现加载真正的APP程序到dram去。所以总共需要二次加载。spl就是second program loader
离线
开始玩F1C100s了,也是裸奔,自己写外设库函数,写的好恼火!!!
离线
问一下,中断向量表在那一步设置。
离线
怎么玩 怎么玩
离线
感谢分享!
离线
主要改动:
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运行的程序来初始化后才能用的么,想把它当单片机用。
最近编辑记录 啊呆 (2020-02-01 19:13:45)
离线
厉害
离线
感谢分享!
离线
感谢分享!学习学习
离线
大佬就是牛逼!学习学习,哈哈。
离线
感谢分享
离线
现在下载都这么困难了吗,新手发不了精华帖啊,晕哥可以收费下载啊
离线
现在下载都这么困难了吗,新手发不了精华帖啊,晕哥可以收费下载啊
感谢建议,现在认真回复7个帖子就可以解锁下载权限。精华帖那个不用担心,已经取消了。
离线
厉害
离线
太优秀了。。。只有70个文件,跟着大佬学习F1C100s,买了板子感觉无处着手。。。
离线
牛逼!学习学习,今天刚入手,也加入学习队伍
离线
厉害啦,又有东西可以搞了,牛人牛逼。
离线
怎么我的账号突然就不能用了,找回密码,提示我邮箱没注册。又重新注册了
离线
厉害了,参照大佬资料学习
离线
在win10下有开发环境吗?
离线
楼主牛B...
离线
感谢达克罗德提供的代码,我在这基础上已移植到KEIL上了,可以用JLINE DEBUG。
离线
能运行哪些服务
离线
楼主能否分享一下细节
离线
@kingmooth 这个用jink调试的方法可以分享一下吗?
离线
@kingmooth 这个用jink调试的方法可以分享一下吗?
离线
感谢楼主的分享,正需要这个。
离线
感谢高手分享!
离线
开始玩F1C100s了,也是裸奔,感谢楼主的分享,正需要这个!!!
离线
感谢分享 学习了!~~
离线
牛逼牛逼最近在学f1c100s,学习到了。
离线
才发现 f1c100s 这么价廉,也想用这个来学习 ARM9 裸奔。看了这里的多个帖子,还是不太明白怎么动手。
离线
这芯片这么牛逼,价格这个低,如果多一些裸奔,完全可以干死单片机呀
离线
刚开始接触nuc972 ,就发现f1c100s,是不是上错船了???
离线
刚开始接触nuc972 ,就发现f1c100s,是不是上错船了???
也不算, NUC972是工业级的,而且引脚/外设都超级多。
离线
Hi guys, is there such a code for V3S?
Or an example of bare metal for lichee Pi Zero?
离线
One more question:
How can I run the elf file directly from boot.scr settings, or is it not possible?
If there was an example, I would be very grateful.
离线
刚到手的板子正准备尝试跑起来测试一下
离线
这个 Bootloader 部分可以直接用来启动 Linux 吗?
离线
应该不行 这个裸奔的
离线
这个F1C100S裸奔(从SPI Flash启动)很给力啊,值得学习
离线
刚入手荔枝派nano,还不知道怎么把bin文件烧录的FLASH中,可以通过USB下载吗,还是把FLASH拆下来单独烧录。
离线
刚入手荔枝派nano,还不知道怎么把bin文件烧录的FLASH中,可以通过USB下载吗,还是把FLASH拆下来单独烧录。
离线
新到的荔枝派nano, 还不知道怎么烧写flash
离线
开始玩F1C100s了,也是裸奔,自己写外设库函数,写的好恼火!!!
你好,你的启动文件是自己写的吗,可以分析一下吗
离线
今天刚到手荔枝派,自己仿照mksunxiboot写了一个下载到sd卡的程序,但BROM总是给我引导到SPIFlash自带的uboot里面。。头疼了,回复一下拿个下载权限,看看大佬是怎么写的
离线
从入门到F1C100都有任何教程吗
离线
在网站下载了mksunxi.exe文件,但还不知道怎么给bin文件加相关头信息,checksum部分是0x00000000
离线
感谢达克罗德提供的代码,我在这基础上已移植到KEIL上了,可以用JLINE DEBUG。
可以分享下具体的移植过程吗?
离线
主要改动:
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似乎发现这个问题,有了更新,我准备试一试。
请问keil5中如何设置BROM程序的实际大小啊,我填固定长度比实际代码大,checksun每次都不一样
离线
kingmooth 说:感谢达克罗德提供的代码,我在这基础上已移植到KEIL上了,可以用JLINE DEBUG。
可以分享下具体的移植过程吗?
可以参https://whycan.com/t_1527.html这个帖子
最近编辑记录 sea18c (2020-11-12 10:26:07)
离线
谁有jtag下载spi的算法,像stm32一样下载
离线
谢谢分享啊
离线
感谢分享,晕哥的网站里面开源的大神真多
离线