最近有客户反馈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的存储范围。
编译bootloader工程生成hex文件,然后在sapphire IP里面添加相应的文件,新版本的IDE支持直接添加bootloader hex文件到工程中,如下图,勾选Overwrite the default SPI bootloader with the user application.然后在Browse中添加相应的bootloader.hex文件,生成IP即可。
那是否就可以用了呢?其实不是,还需要按照下面的文章进行修改,以保证RISC V对flash的读写正确。
Ti60F100 Flash处理方案 (qq.com)
之后重新编译工程,并合成文件。
下载程序,加载成功。
(2)修改APP在外部存储的空间大小。
如果APP程序比较大,需要修改APP在外部存储器的分配空间,如下图,默认是124K,根据需要来修改,下图我们修改成了1MB.
编译程序的结果如下
但是要注意生成过程要勾选上external_script_embedded_sw选项,生成的embedded_sw文件才会更新,但是要注意会覆盖之前修改的信息,所以这是需要注意的。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !