自己用C语言写RH850 F1L serial bootloader
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序)。
由于有了RH850 F1KM bootloader的经验,F1L C语言bootloader的开发比较顺利。由于上位机是HyperTerminal, 这个bootloader 我叫它hyperbootloder_F1L, 下面就简单介绍下,相比较hyperbootloader_F1KM, 它有以下不同
1. hdwinit
2. memory map
3. FCL 宏
首先介绍hdwinit的不同,在boot.asm文件中,代码都是汇编,但是看懂问题不大。比较坑人的是,新建CS+工程时,已经选择了正确的芯片型号,完了,自动生成的boot.asm文件中hdwinit, 既然还有以下提示:
;-----------------------------------------------------------------------------
; hdwinit
; Specify RAM addresses suitable to your system if needed.
;-----------------------------------------------------------------------------
CS+, 太蠢,为什么就不能生成不用调整直接就可以用的呢? 通过查看datasheet后,我的改动如下
RETENTION_RAM_ADDR .set 0xfee00000
RETENTION_RAM_END .set 0xfee07fff .align 2
_hdwinit:
mov lp, r14 ; save return address mov RETENTION_RAM_ADDR, r6
mov RETENTION_RAM_END, r7
jarl _zeroclr4, lp ; clear Retention RAM mov r14, lp
jmp [lp]
接下来是介绍memory map的不同, F1KM R7F701684 是1M 的code flash, 容量非常大,memory map 随手定义的,bootloader 是 0~0x17FFF, application 是 0x18000 ~ 0xFFFFF。 bootloader 实际上不需要那么大的空间。F1L我用的是 R7F701011, code flash 只有256K的容量,所以我重新规划了memory map, bootloader 区间是0~0x0FFFF, application 区间是 0x10000~0x3FFFF. 其实bootloader区间还可以继续缩小。
接下了就是最大的坑了,在FCL library 里面有个文件 fcl_cfg.h. 在这个文件中一定不能define R_FCL_NO_BFA_SWITCH, 否则调用FCL API时一直会有exception. debug时的现象就是FCL OPEN时会跳到exception handler (中断程序)中去,具体是哪种exception我没有去探究。总之这个一定要注意,在FCL user manual中有提到F1KM 等一些芯片需要得define R_FCL_NO_BFA_SWITCH 这个宏。 F1L 不需要,所以一定不要define.
//#define R_FCL_NO_BFA_SWITCH
hyperbootloder_F1L 和 hyperbootloader_F1KM 一样非常简单好用,不需要写上位机,直接用超级终端hyperTerminal就可以,很适合实验室或开发阶段使用。
自己用C语言写RH850 F1L serial bootloader的更多相关文章
- 自己用C语言写RH850 F1KM serial bootloader
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 手上有块Renesas ...
- 自己用C语言写dsPIC / PIC24 serial bootloader
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). HyperBootlo ...
- 自己用C语言写单片机PIC18 serial bootloader
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). HyperBootlo ...
- 自己用C语言写单片机PIC16 serial bootloader
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 为什么自己写bootl ...
- 自己用C语言写NXP S32K144 serial bootloader
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader) 欢迎咨询或定制bootloader(在线升级程序). NXP S32K144 ...
- C语言RH850 F1L serial bootloader和C#语言bootloader PC端串口通信程序
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程 ...
- 自己用C语言写NXP S32K116 serial bootloader
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 每次我有了新的EVA ...
- C语言RH850 F1KM serial bootloader和C#语言bootloader PC端串口通信程序
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 今天我要介绍的RH85 ...
- C语言dsPIC / PIC24 serial bootloader和C#语言bootloader PC端串口通信程序
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 新dsPIC/PIC2 ...
随机推荐
- 存储过程带参数和sqlcommand
public DataSet SelectBillNo(string CarrierCode, string Date, string CompanyCode) { System.Collection ...
- Docker学习(三)认识Docker和常用命令
Docker学习(三)认识Docker和常用命令 Docker体系结构 docker服务端,作为服务的提供方,核心进程 docker daemon,所有docker命令都是通过这个进程完成的 REST ...
- 关于neo4j初入门(2)
DELETE删除 删除节点及相关节点和关系. DELETE <node-name-list> DELETE <node1-name>,<node2-name>,&l ...
- 记第一场cf比赛(Codeforces915)
比赛感想 本来21:05开始的比赛,结果记成21:30了...晚了25分钟才开始[捂脸] 这次是Educational Round,所以还比较简单. 前两道题一眼看去模拟+贪心,怕错仔细看了好几遍题, ...
- requests快速构造请求头的方法
上图请求头内容,内容多不说,也不确认哪些数据是必须的,网上找到一个懒办法 快速一键生成 Python 爬虫请求头 实战演练 抓取网站:https://developer.mozilla.org... ...
- FLASK 三剑客 request jinjia2
Flask Web 框架Django 15 优势 : 组件全 - admin - Model ORM - Forms 教科书式 劣势 : 加载所有组件 - 占用资源较高 重型框架 Flask 3 优势 ...
- nmap详解之原理与用法
前言 nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具.软件名字Nmap是Network Mapper的简称.Nmap最初是由 ...
- Spring注解开发系列Ⅳ --- 属性赋值
在Spring框架中,属性的注入我们有多种方式,我们可以通过构造方法注入,可以通过set方法注入,也可以通过p名称空间注入,方式多种多样,对于复杂的数据类型比如对象.数组.List集合.map集合.P ...
- JDK源码之Integer类分析
一 简介 Integer是int基本类型的包装类,同样继承了Number类,实现了Comparable接口,String类中的一些转化方法就使用了Integer类中的一些API,且fianl修饰不可继 ...
- 2020年大厂Java面试题(基础+框架+系统架构+分布式+实战)
前言 作为一个Java开发者,Java架构师应该是大家的一个职业目标了吧. 要成为Java架构师,首先你要是一个高级Java工程师,熟练使用各种框架,并知道它们实现的原理.jvm虚拟机原理.调优,懂得 ...