荔枝派nano上手记录

windows下建立环境(RT_THREAD)

https://blog.csdn.net/u012577474/article/details/103317631?biz_id=102&utm_term=%E8%8D%94%E6%9E%9D%E6%B4%BEnano%20windows%E4%B8%8B%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-1-103317631&spm=1018.2118.3001.4187#p3924
参考本站博客,按照顺序一步一步来;
因本人喜欢跳着看,遇到的坑:
(1)一定要用Zadig先安装驱动,短接flash的1、2或者1、4引脚;
(2)直接烧录编译后的bin文件,没有将bootloader下载到flash,无法启动系统,一定要先下载BootLoader,附链接https://debugdump.com/viewtopic.php?pid=3924#p3924
(3)本人用Xshell查看串口数据,要进入bootloader模式要手疾眼快的进行连接,插入usb后迅速新建会话;
(4)进入bootloader后用evn工具下载固件显示Device not found,需要重新安装驱动,之前成功过不知道为啥没了,很费解;

用keil MDK进行裸机实验

https://whycan.com/t_3645.html
参考哇酷开发者社区帖子:
相关编译链和工具已包含,直接下载楼主给的文件
需要支持ARM7/9旧器件的 MDK 版本:
http://www2.keil.com/mdk5/legacy/
https://armkeil.blob.core.windows.net/legacy/MDK79525.EXE
https://armkeil.blob.core.windows.net/legacy/MDK79524.EXE

修改编译工具在这里插入图片描述
在这里插入图片描述
文件夹到ToolChain,然后编译下载即可,我没有用jlink下载,用evn工具烧录的,可用(Tools文件夹下需要msvcr120d.dll文件,这样生成的bin才能跑起来)
具体为啥需要mksunxi.exe这个工具生成的bin,正常生成的bin缺少魔术头,使用工具后添加了魔术头;可参考这个帖子,我直接贴出来原楼主的话https://whycan.com/t_1527.html
全志F1C100s这款芯片是ARM926内核,通过学习其启动流程,可以知道bootloader的原理。可是由于资料的缺少,以至于,我对于它的启动流程,也只是猜测,并未发现有比较严格的描述。因此对于这个芯片的启动流程,任何回答,我认为都不严谨,但是不影响我们对其进行学习和开发。这部分,比较难以描述清楚,只能通过提问-回答的方式来描述。
(1)芯片上电后,做什么事情呢?
F1C100s上电后,芯片内部接通BROM,执行BROM里的程序。
==>BROM里的程序做什么事情呢?
①检查SDIO接口挂接的存储器是否存在有效魔术头。存在,则根据魔术头加载此存储器的程序,并执行。否则执行下一步。
②检查SPI接口挂接的存储器是否存在有效魔术头。存在,则根据魔术头加载此存储器的程序,并执行。否则执行下一步。
③检测不到有有效程序,芯片就进入FEL模式。
==>魔术头是什么呢?
魔术头应该是96字节的一组数据,里面描述了用于SPL相关信息,用于给BROM识别存储器是否存在有效程序。其中包含了,程序的体积,运行地址,等数据。
==>FEL模式是什么呢?
进入FEL模式,我们可以使用软件sunxi-tools通过USB给芯片下载程序到flash等存储器中。
==>芯片如何跳转到用户程序入口呢?
根据本教程对此问题作答,BROM识别到SPI Flash存在有效程序后,会根据魔术头的内容加载SPI Flash里的数据,到芯片的SRAM0中。
注意,这一块SRAM0位于0X00000000地址处,与BROM地址重合,在BROM启动加载代码时,BROM已经失效。也就是说,我们的程序是无法访问BROM的,只能访问BROM失效后的,并且地址与BROM重合的SRAM0。加载完之后,跳转执行。跳转到什么地方执行?不知道,理论上是0X00000000地址,然后执行复位异常的代码。
由于SRAM0的空间有效,非常小,应该只有45KB左右(理论上是32KB,但是经过测试,可以用45KB)。所以,加载进SRAM0的代码需要负责把体积大的程序复制到DRAM里面,然后跳转过去执行。
这个流程描述的非常模糊,可以这样表示:
·BROM里的程序负责加载bootloader到SRAM0,然后跳转执行。
·bootloader程序负责加载APP到DRAM,然后跳转执行。
有可能APP的体积非常大,加载过程很久,所以可以在加载APP之前,显示产品Logo。

关于jlink裸机调试可参考https://whycan.com/t_1527.html
还没有弄过,以后有问题再记录

Linux下环境

参考哇酷开发者社区帖子:https://whycan.com/t_3269.html
我用的编译工具链和楼主略有不同,gcc-linaro-7.3.1-2018.05-i686_arm-linux-gnueabi.tar;站内可找到,安装的时候发现环境配置一直有问题:提示错误找不到文件,是因为缺少32位库,解决办法:

apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0

如果提示错误:

sudo apt-get install lib32z1 lib32ncurses5 libbz2-1.0:i386 lib32stdc++6
解决。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值