您尚未登录。

楼主 #1 2018-07-13 10:08:59

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,138
积分: 1090.5

连续多个晚上熬夜,终于搞定F1C100S裸奔(从SPI Flash启动)

主要改动:
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)

离线

楼主 #5 2018-07-15 00:38:45

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,138
积分: 1090.5

Re: 连续多个晚上熬夜,终于搞定F1C100S裸奔(从SPI Flash启动)

加了MMU的支持,开cache,并把拷贝代码放到DRAM,使得image从SPI复制到DRAM时间减少到原来的60%。但是最初从SPI加载boot代码到SRAM这个时间400ms,实在是太慢了,谁知道怎么减少这个时间。。。
我裸奔就是想实现快速启动系统,如果这加载时间就这么长,那还不如直接上Linux。。。

离线

楼主 #8 2018-08-07 11:20:48

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,138
积分: 1090.5

Re: 连续多个晚上熬夜,终于搞定F1C100S裸奔(从SPI Flash启动)

三哥 说:

这帖子可以呀,求大神QQ号

我平常不上Q呀,有什么问题在论坛提出来,大家都可以帮忙

离线

楼主 #10 2018-08-15 17:38:48

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,138
积分: 1090.5

Re: 连续多个晚上熬夜,终于搞定F1C100S裸奔(从SPI Flash启动)

Jin劲 说:

我调了两个月裸机串口 一直直接用论坛的串口驱动代码 后来想了一下不对啊 忐忑了一下 会不会引脚不一样啊 结果一看...

哈哈,刚拿到板子时我也是死活看不到串口打印,直到看进去code才发现

离线

楼主 #13 2018-08-19 17:16:02

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,138
积分: 1090.5

Re: 连续多个晚上熬夜,终于搞定F1C100S裸奔(从SPI Flash启动)

晕哥说得对

离线

楼主 #16 2018-08-19 19:08:40

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,138
积分: 1090.5

Re: 连续多个晚上熬夜,终于搞定F1C100S裸奔(从SPI Flash启动)

晕哥 说:

里面还有好多文件是不必要的,还可以精简

离线

楼主 #18 2018-08-19 20:37:03

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,138
积分: 1090.5

Re: 连续多个晚上熬夜,终于搞定F1C100S裸奔(从SPI Flash启动)

晕哥 说:

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驱动的是另一个帖子里有上传

离线

楼主 #20 2018-08-19 20:50:38

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,138
积分: 1090.5

Re: 连续多个晚上熬夜,终于搞定F1C100S裸奔(从SPI Flash启动)

志文 说:

可以在 main.c  点亮屏幕吗?

https://whycan.cn/t_1457.html
这里的代码有main函数里直接亮屏的

离线

楼主 #33 2019-10-30 16:42:49

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,138
积分: 1090.5

Re: 连续多个晚上熬夜,终于搞定F1C100S裸奔(从SPI Flash启动)

gui401 说:
晕哥 说:
gui401 说:

@三哥 这个exe文件用来干嘛的?

给编译出来的 spl 加魔术头用的,

brom 会先检查魔术头, 合规才会继续加载 spl 到 ram

新手表示越来越蒙了,不是把生成的bin文件下载到flash就行了吗?还有spl又是什么东东?具体怎么操作呢?感觉我是不是跳过了一些入门贴。。。

这不是单片机那样直接从flash执行就可以。bin的头要放一些信息,让芯片内部的brom程序知道你需要加载多少代码去SRAM去执行。最终你是需要在dram中执行代码的,所以这段代码还得实现加载真正的APP程序到dram去。所以总共需要二次加载。spl就是second program loader

离线

楼主 #93 2021-07-22 18:11:46

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,138
积分: 1090.5

Re: 连续多个晚上熬夜,终于搞定F1C100S裸奔(从SPI Flash启动)

jpglcdk 说:

达克罗德大佬:这个示例能给mangopi r3用吗?我已经刷好了,但是在UART0上接上串口转接卡,无法看到输出字符“A”。

https://gd4.alicdn.com/imgextra/i4/479269519/O1CN01GTb4S02KBkpY6rcjS_!!479269519.jpg_400x400.jpg

应该能用的,你接的是UART0 是GPIOE1 and GPIOE0吗?

离线

楼主 #99 2021-07-26 16:06:16

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,138
积分: 1090.5

Re: 连续多个晚上熬夜,终于搞定F1C100S裸奔(从SPI Flash启动)

jpglcdk 说:

大佬我问个低级的问题:
mangopi刷好后是怎么选择从刷入的这个裸机程序启动的?
我刷完这个裸机程序后重启(点击reset按钮或者断电后重新给电),都是进入原先刷入的linux系统。

优先SD卡启动,所以你要确保SD卡没东西或者拔掉SD卡
另外是不是没有烧成功成功到norflash?你的Linux系统是烧到norflash的吗?

离线

楼主 #100 2021-07-26 16:08:22

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,138
积分: 1090.5

Re: 连续多个晚上熬夜,终于搞定F1C100S裸奔(从SPI Flash启动)

@jpglcdk
你烧的是build目录下的bin文件吗?

离线

楼主 #102 2021-07-27 10:59:26

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,138
积分: 1090.5

Re: 连续多个晚上熬夜,终于搞定F1C100S裸奔(从SPI Flash启动)

@jpglcdk
nandflash?sunxifel应该不支持nandflash吧?即使sunxifel支持nand,我这个裸奔代码也不支持从nandflash启动,它的引导部分是从spi nor读代码到ddr

离线

楼主 #103 2021-07-27 11:01:14

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,138
积分: 1090.5

Re: 连续多个晚上熬夜,终于搞定F1C100S裸奔(从SPI Flash启动)

想让这个裸奔代码能从nand启动,你需要改从flash读代码那一段

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn