皇冠新体育APP

IT技术之家

七天征服Bootloader 开发- 第0课(概述)_开发bootloader_大叔带刺

推出时间间隔:2023-08-24 10:25:16 嵌入式 108次 标签:嵌入式硬件 mcu risc-v
未来个把月,我会逐步把每一个环节的开发过程以及踩过的坑写出来。并将我在网上下载的UDS协议栈作为base来深入剖析,从UDS入门,结合Bootloader设计需求,深刻掌握Bootloader设计思路,从而流水线式Bootloader开发。为日后的职业生涯积累筹码。...

前言

在3个月前,Bootloader开放给我策略而言,正如天花吊顶板一致的现实存在,高在上,就如同睥睨世间的撒旦在天上飞呼吸有很稀的热空气,可望而不可以即,令基础上应用开放的老百姓望而止步!但这3个月来到,从新的软件链应用刚刚开始,到APP小程序下载使用顺利后连下串的浅绿色对号,我震惊的找到,Bootloader开放被远古神话了,只是关卡没了很大!历程过第一次历程,,7天开放一Bootloader毛病不太大。

BOOT不神秘

先别感到恐惧,公司差别一些BOOT和APP的异同,压压惊:
Bootloader与普通App的对比
BOOTAPP
启动代码
链接文件
中断
内核驱动
外设驱动
入口地址跳转--
Data Flash
Self-Programming (Code Flash) --
多核同步--[有]
想泡表,Bootloader并未那些那些隐密的, 位置自动页面跳转这方面就三行源代码的作业量,采用的数学函数结构体指针自动页面跳转到的紧固的偏移量位置,如0x20000。

相较APP开发技术,真正的薄弱点可是Self-Program(即对企业ROM的擦写),要是你的程序代码就都可以对Code/Program Flash擦/写,既然就都可以工程建筑成Bootloader了!就那末简便。

大量代码可参考

当我们在的设计制作层顶架构部署的时期旨在将可冻胚移植性主要化的标准,来的设计制作Bootloader,那么就能在天后设计规划新的Bootloader时借鉴众多众多 -- 这就7天统治Bootloader的基本。时尚博主在我身边还真有个神(应为2位)在7天内玩转信用卡Bootloader设计规划。

是不是很担心UDS这一块?认为这是个大头?--现身说法的讲,事实正于此相反,网上关于BOOT的UDS协议栈很多,随便下载一个做一下裁剪和适配即可,并不需要完全从零做起。我们只造车不造轮子!

UDS这两块是纯图片软件的1个规定,完完整部全全脱轨设备,TC397上边的UDS和TC275上边的UDS是完完整部全全那样的。而完完整部全全那样的UDS对社会底层的命令行也是完完整部全全那样的,,因此HAL部位的音频接口准则也是因设备调整而调整。在HAL一下,部位MCAL规定音频接口准则构建的模块也是用变。 图一为中未蒙版的控制器仅以可引用的的部分。?看不见,做到粗细件的解耦后,规划设计一种新的Bootloader只需要标准配置/手写板低层的MCAL,再加一位简略的时片OS就能。


软件架构不复杂

简单的说点一下我做的Bootloader:

1. Timer模块,主要为OS(时间片)提供定时,同时该Timer还可以用来实现UDS协议中的时间参数:N_xx,BS, STmin,S3Server...

2. OS在Timer的根本上定期的资源调用作业,为其它函数公式的执行程序给出了引发状态。 3. MCAL电源模块,为达成Bootloader要求实用功能做的低层驱动安装。 4. HAL控制模块,用于UDS和下层驱动器彼此的桥梁工程。它在过后的冻胚移植成功至关比较重要,UDS必须要的服务器硬件设施操作流程都指向基层HAL而不指向基层MCAL,五是平台结构的清新,第二实行目标平台上的UDS合同样本与服务器硬件设施的解耦,为可冻胚移植成功性能提供实行目标根本。过后开发管理新的Bootloader的同时提高HAL中的插口不便,只将插口内涵数值做改进(可能有一些应用MCAL细则插口做的涵数值并不用动,如果MCAL也是细则的啊). 5. MINI-UDS协议书栈,该控制器从CAN的RX调整指数函数中拿数值显示总线数值显示,并将RAW数值显示分析成UDS下令,MINI-UDS控制器根据不处于计算机硬件,因此 这一同若方案的好好,不错控制100%的移殖!


工作目标很明确

汇总了了 ,建设Bootloader工作中就以下几秒: 1. 再启动代码怎么用,在main()指数函数刚刚开始化经常中断向评定量表,RAM,适用寄存器等-- 维持软件能进行main。 2. 环节信息Ld/Lsl信息,因Bootloader对过程跳转页面新详细地址和隶属ROM部位都拥有严格规范有必要,,因此有必要确认环节信息将Bootloader所配的资源量评定好,能保证Boot不被APP过程覆盖率,且在Code Flash做数据源擦写的情况三的部分编码要运转在RAM中,就想要确认环节信息其他其新详细地址。 3. OS编写出。手写字码/MCAL搭配GPT/STM实现目标一款偏短精悍的OS-- 保证质量责任都能如约运行。 4. MCAL分配,最旱要利用的是CAN引擎,确认能从传输线收/发动态统计数值显示。CAN的RX回调函数公式函数公式中,重置动态统计数值显示导入,第二传至UDS协商栈详解。Port/Dio是为调整MCU校准用的,CanTrcv的驱程也是有或者使用到。看门狗这就不要说出。CRC则是来在通过下载方式和通过下载完毕接下来通过动态统计数值显示验校的。在线升级方式中动态统计数值显示是传输线->RAM->ROM,而Code/Program Flash来将代码是什么永久手机截图到ROM中,Data Flash则是来将动态统计数值显示(2E服务于要拷贝的动态统计数值显示或APP完正性标志logo)永久手机截图到MCU里的。会说,Bootloader定制开发中最高的幺蛾子一般情况下就出在Flash这一点。SPI则是为几个繁杂的CAN Trcv驱程开始准备的。 5. HAL建设。各种对底部的进行都在这样的想做封裝。要确保MINI-UDS能正常进行设备。 6. MINI-UDS协义栈联合开发。将CAN传输线上的下令/数据分析信息解释完成。往上走经CAN传输线发UDS死机,朝下交换数据分析信息到Flash/交换控制指令到MCAL某些板块。

学习计划

十年后的中国个把月,你要逐渐把每一位个流程的开发管理管理流程、踩过的坑撰写出来。并将我还在网上微信下载安装的英飞凌TC2xx的UDS合同栈为base来难以忘怀剖析材料,从UDS初学,配合Bootloader设置意愿,难以忘怀撑握Bootloader设置方法,而流水帐线式Bootloader开发管理管理。为往后的新职业生崖积累更多筹(jia)码(xin)。

入门篇

课程

难度

七天征服Bootloader 开发- 第1课(启动代码和链接文件)★★★★★
七天征服Bootloader 开发- 第2课(STM驱动和时间片OS开发)★★
七天征服Bootloader 开发- 第3课(CAN模块MCAL配置)★★
七天征服Bootloader 开发- 第4课(Flash固件库集成)★★★★★
七天征服Bootloader 开发- 第5课(MCAL其他模块配置)★★
七天征服Bootloader 开发- 第6课(HAL硬件抽象层开发)★★★
七天征服Bootloader 开发- 第7课(UDS协议栈移植)★★★

精通篇

课程

难度

七天征服Bootloader 开发- 第8课(UDS之TP层开发,报文获取、拆包、打包)★★★★★
七天征服Bootloader 开发- 第9课(UDS之Timer的开发)
七天征服Bootloader 开发- 第10课(UDS之10_11_22_2E服务开发)★★★
七天征服Bootloader 开发- 第11课(UDS之27服务开发)
七天征服Bootloader 开发- 第12课(UDS之31服务开发)★★★★
七天征服Bootloader 开发- 第13课(UDS之34_36_37服务开发)★★★
七天征服Bootloader 开发- 第14课( 软件下载流程和程序跳转逻辑)★★★