[应用方案]

新唐N76E003ISP串口下载轻体验

[复制链接]
1275|16
手机看帖
扫描二维码
随时随地手机跟帖
51xlf|  楼主 | 2024-4-22 15:00 | 显示全部楼层 |阅读模式
ISP全称In System Programming,即在应用中编程。既然是在应用中编程,那么第一步就是你的单片机要有应用,这里的应用可以理解为单片机程序,这是一段独立的程序,在嵌入式单片机中我们一般叫它引导程序,即bootloader,bootloader在各类单片机中的定位基本一致,这是单片机上电首先进入执行的一段程序,可以是对单片机的一些配置,也可以是为ISP做准备。

相对而言,STM32单片机对于ISP的设计就比较灵活一点,它可以通过用户对单片机引脚的配置来决定单片机上电启动的位置,如下图。并且厂家也已经在出厂前就把bootloader程序烧录到系统存储区,方便ISP升级,ISP升级的协议是一些标准的文件传输协议,通过串口即可实现程序的升级。
新唐N76E003的ISP设计与上诉两款单片机基本一致,它在单片机内放了两片flash,如下图,LDROM专门用于存放bootloader,APROM专门用于存放用户代码,单片机启动运行哪一片的代码,以及LDROM大小的分配都是在config里面进行配置。但是与上诉单片机不同的是厂家出厂前并没有把bootloader程序烧录到LDOROM中,这迫使你要使用它的ISP功能就要先通过ICP下载器把bootloader烧录到LDROM中去,并配置一下启动项,这个槽点经常被大家吐槽,我都买了ICP下载器了还用ISP干嘛,虽然是有些鸡肋,但是在一些特殊应用情况下不得不使用ISP,那也只能来研究一下了。
N76E003通过ISP烧录程序
下载完成后便可以用官方的ISP软件通过串口把程序下载到单片机的APROM里面了,如下图。
ISP软件貌似只能下载bin格式的二进制文件,所以需要在keil里面编译时加载一条命令,通过第三方软件把hex转换成bin文件,使用的软件如下图,该软件也是官方自带的,我会在文末放链接。
转换bin文件的方法,首先将上诉软件hex2bin放到输出文件夹内,然后打开keil的魔术棒,点击User,如下图,第三步添加一条命令 .Objectshex2bin.exe .Objectstemp.hex
.Objectstemp.hex 这个是指需要转换的hex位置,temp.hex是工程输出的hex文件,根据自己的文件名修改。
上诉ISP已经实现了基本的功能,即串口下载,但是看网上的评价对官方的ISP代码质量表示不屑。例如代码量过大,明明1K就能解决的事情,它非搞了2K多。每次ISP都会擦除整个APROM等等,我看了官方的代码,确实有改进的空间,我的目标改进方向主要是自定义协议,精简代码量。这样将bootloader代码精简到几百个字节,能省则省,为用户代码省下空间。协议自定义,自写上位机,脱胎换骨。想怎么来就怎么来。奈何本人懒得动,并且实际项目中还没有写到rom不够用的情况,所以暂时不要重复造轮子,先用官方的ISP程序,日后有时间可以重0到1写一套完美的ISP程序。

通过虚拟串口,看到上位机在连接单片机时不停的在发送一帧64字节的数据,开头为0xAE,如下图
这样我们可以在APROM的代码中监听串口数据,如果收到0xAE这帧数据则跳转到LDROM执行,并且程序可配置成直接上电直接从APROM中执行。关于LDROM和APROM互相跳转可以通过阅读芯片手册对CHPCON寄存器进行配置。如下图
写成子函数如下
void Jump_toLDROM(void)
        TA = 0xAA;
        CHPCON |= 02;                  // BS = 1            
        TA = 0x55;
}

void Jump_toAPROM(void)
        TA = 0xAA;
        CHPCON &= 0xFD;               // BS = 0        
        TA = 0x55;
}

总结
ISP作为升级代码的一种方式,十分的方便快捷,只需一个TTL模块便可以对代码进行升级,后续还可以通过无线模块实现OTA升级,那样就更加的方便了。

使用特权

评论回复
gejigeji521| | 2024-4-22 22:28 | 显示全部楼层
还没体验过这个呢。出厂就具备这个功能了吗,就可以串口烧录吗?

使用特权

评论回复
linfelix| | 2024-4-29 16:27 | 显示全部楼层
新唐N76E003单片机提供了在系统编程(ISP)功能,允许用户通过串口下载程序,无需将单片机从电路板上移除

使用特权

评论回复
saservice| | 2024-4-29 16:40 | 显示全部楼层
为了使用ISP功能,首先需要通过ICP(电路编程)下载器将引导程序(bootloader)烧录到LDROM中。这是因为新唐N76E003单片机出厂时并未预烧录ISP代码。完成这一步骤后,可以使用新唐提供的ISP固件和PC端软件,通过串口将用户代码下载到APROM中

使用特权

评论回复
usysm| | 2024-5-2 17:06 | 显示全部楼层
Bootloader则可以通过用户配置芯片引脚来选择启动位置,通常也由厂家预烧录。

使用特权

评论回复
wwppd| | 2024-5-3 12:20 | 显示全部楼层
在ISP的使用过程中,还存在一些可以改进的地方,如精简bootloader代码、自定义协议等,以减少代码占用空间并提高升级过程的灵活性。此外,通过配置单片机的CHPCON寄存器,可以实现LDROM和APROM之间的相互跳转,从而实现在不重启或复位的情况下进行热升级

使用特权

评论回复
uiint| | 2024-5-8 13:02 | 显示全部楼层
便捷的编程方式使得在产品研发阶段或需要更新固件时,能够高效地进行代码升级

使用特权

评论回复
cemaj| | 2024-5-8 19:54 | 显示全部楼层
串口是一种较为传统的通信方式,相关的硬件和软件资源都非常成熟,因此成本较低。

使用特权

评论回复
Henryko| | 2024-5-8 20:35 | 显示全部楼层
串口下载是不是要改boot啊

使用特权

评论回复
51xlf|  楼主 | 2024-5-9 16:53 | 显示全部楼层
与更复杂的下载方式相比,串口下载通常不需要复杂的驱动程序或额外的硬件。

使用特权

评论回复
sesefadou| | 2024-5-9 22:57 | 显示全部楼层
新唐N76E003单片机的内存分为三个部分:应用ROM(APROM)、加载ROM(LDROM)和CONFIG字节。其中,APROM通常用于存储用户代码,而LDROM则用来存放启动代码,也就是引导程序。引导程序是一段独立的代码,在上电时首先执行,它可以配置单片机或对ISP编程做准备

使用特权

评论回复
zerorobert| | 2024-5-10 15:44 | 显示全部楼层
N76E003出厂时并没有预烧录Bootloader到LDROM中,因此需要先通过ICP下载器将Bootloader烧录到LDROM中,才能使用ISP功能。

使用特权

评论回复
sanfuzi| | 2024-5-12 14:18 | 显示全部楼层
新唐的ISP工具仅支持bin格式的二进制文件下载,因此在Keil开发环境中编译时需要添加额外的命令,以便将hex格式的文件转换为bin文件。转换后的bin文件可以直接通过ISP软件下载到单片机中

使用特权

评论回复
ingramward| | 2024-5-13 22:25 | 显示全部楼层
Bootloader是芯片上电后首先执行的程序,负责初始化芯片并为后续的ISP编程做准备。

使用特权

评论回复
bartonalfred| | 2024-5-14 15:13 | 显示全部楼层
串口通信通常只需要少量的接线,即可实现与PC机的通信。

使用特权

评论回复
10299823| | 2024-5-14 20:52 | 显示全部楼层
如果需要更新Bootloader,则需要先通过ICP下载器烧录Bootloader到LDROM。

使用特权

评论回复
kmzuaz| | 2024-5-15 12:11 | 显示全部楼层
在进行ISP之前,需要一个引导程序(Bootloader)来准备芯片,使其进入编程模式。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

534

主题

9410

帖子

20

粉丝