Ti60F100用片内flash启动RISCV程序不能成功的解决办法

描述

最近有客户反馈Ti60F100如果用片内flash启动RISCV 程序不能成功。所以才有此篇。

(1)Ti60F100内部是一个16Mbit的flash,每个地址对应的是一个8位的数据,所以,地址范围是0x000000~0x200000。

所以默认生成的demo的soc从falsh的加载地址是0x380000已经超出了flash的范围,当然也就不可能加载成功了。

所以第一步就是要修改RISCV从flash的启动地址。通过Efinity RISC-V IDE打开bootloaderConfig.h文件,宏定义#define USER_SOFTWARE_FLASH    0x880000就是定义从flash的启动地址。

我们这里修改0x180000,因为我们的APP程序是很小,保证了不会超出flash的存储范围。

Flash模块

编译bootloader工程生成hex文件,然后在sapphire IP里面添加相应的文件,新版本的IDE支持直接添加bootloader hex文件到工程中,如下图,勾选Overwrite the default SPI bootloader with the user application.然后在Browse中添加相应的bootloader.hex文件,生成IP即可。

Flash模块

那是否就可以用了呢?其实不是,还需要按照下面的文章进行修改,以保证RISC V对flash的读写正确。

Ti60F100 Flash处理方案 (qq.com)

之后重新编译工程,并合成文件。

Flash模块

下载程序,加载成功。

(2)修改APP在外部存储的空间大小。

如果APP程序比较大,需要修改APP在外部存储器的分配空间,如下图,默认是124K,根据需要来修改,下图我们修改成了1MB.

Flash模块

编译程序的结果如下

Flash模块

但是要注意生成过程要勾选上external_script_embedded_sw选项,生成的embedded_sw文件才会更新,但是要注意会覆盖之前修改的信息,所以这是需要注意的。

Flash模块

Flash模块


审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分