历史上的今天
返回首页

历史上的今天

今天是:2025年01月18日(星期六)

正在发生

2020年01月18日 | stm32 的Flash Loader Demonstrator改写

2020-01-18 来源:eefocus

本来是写在了baidu的blog上的,不知触犯了什么规矩,居然发布失败,只能改在这里了,我觉得我的一些想法,一些工作中的闪光的发现,能告诉大家,挺好的。


因为让设备Boot0 = 1后,设备一直狂发00,所以,st的那个Flash Loader demo无法Next成功。


实际上,这个ISP的协议早已经公开了,大家可以自己编写下载工具的。


首先先说一下,我使用的是V2.6.0的版本,其它的应该类似吧。或者以后的版本,ST自己会改正这部分。


在安装目录里有一个Src


之后打开STMicroelectronics Flash  Loader project.sln


查找STUARTBLLIB.cpp


里面的这个函数


STUARTBLLIB_API BYTE STBL_Init_BL()


因为它每次发送完报文头0x7F后只接受1个字节,造成无法正确识别到单片机的应答0x79。


我把开头部分改为


if (!Cur_COM.isConnected)  return NO_CON_AVAILABLE;



LPBYTE RQ_Buffer = (LPBYTE) malloc(10000);


    RQ_Buffer[0] = INIT_CON; 

//if (Cur_COM.setTxd(FALSE)) _sleep(100);


    int iReLen;

iReLen = Cur_COM.sendData(1, RQ_Buffer);


if (iReLen == -1)

  return SEND_FAIL; 


iReLen = Cur_COM.receiveData(10000, RQ_Buffer);

if (iReLen ==  -1)

  return READ_FAIL;


if (iReLen > 0)

{

  RQ_Buffer[0] = RQ_Buffer[iReLen-1];

  

}

else

{

  return READ_FAIL;

}



//Work-Around : in case of the device send a 0x00 value 

//after system reset , we reveive  again the real ack


if( !((RQ_Buffer[0] == ST75) || (RQ_Buffer[0] == ST79)) )

  if (Cur_COM.receiveData(1, RQ_Buffer) != 1)

   return READ_FAIL;


//if (Cur_COM.setTxd(FALSE)) 

//_sleep(100);


我是按Release编译的,编译后,到SrcBINRelease找到STUARTBLLIB.dll


拷贝到STMicroelectronics flash loader.exe所在目录,即可应对那些狂发00的串口了。


不上传dll文件了,把这些文字留给有心人吧,也许你们看到这些文字时,那个工具已经修正了这个bug,


也许工业界已经不再流行stm32了,


也许我已经老了。

推荐阅读

史海拾趣

Danube Enterprise Co Ltd公司的发展小趣事

随着全球对环保问题的关注度不断提高,Danube也积极响应这一趋势,将绿色环保理念融入到产品设计和生产过程中。他们采用了环保材料和可循环使用的包装材料,降低了产品对环境的影响。同时,Danube还加大了对环保技术的研发投入,推出了一系列具有节能环保功能的电子产品。这些努力不仅提升了Danube的品牌形象,也为其未来的发展奠定了坚实的基础。

CLARE公司的发展小趣事

随着技术的不断进步和市场的日益成熟,CLARE公司开始致力于产品的创新和升级。公司研发团队紧跟科技前沿,不断探索新技术、新材料和新工艺的应用,推出了一系列具有创新性和领先性的电子产品。这些产品不仅满足了客户的需求,还引领了市场的潮流,进一步提升了CLARE公司的品牌影响力和市场竞争力。

台湾丰宾(CapXon)公司的发展小趣事

台湾丰宾(CapXon)公司创立于1980年,起初是一家专注于电容器研发与生产的小型电子元件制造商。在创始人的带领下,公司凭借对技术的执着追求和对品质的严格把控,逐渐在电子行业中崭露头角。通过不断的技术创新和产品优化,CapXon的电容器产品在市场上获得了良好的口碑,为公司的发展奠定了坚实的基础。

CHIMEI(奇美)公司的发展小趣事

随着全球化趋势的加速,奇美公司开始实施全球化战略,积极拓展国际市场。公司通过在海外设立分支机构、参加国际展会等方式,加强与国际客户的交流与合作。同时,奇美还积极引进国际先进的技术和管理经验,提升公司的国际化水平。这种全球化战略使得奇美能够更好地融入全球电子产业链,提升公司的国际竞争力。

Babcock Inc公司的发展小趣事

为了进一步提升公司的竞争力和市场份额,Babcock积极寻求与国际知名企业的合作。通过与这些企业的技术交流和项目合作,Babcock不仅引进了先进的技术和管理经验,还成功打开了国际市场的大门。随着业务的不断拓展,公司的规模和影响力也逐渐扩大。

Flexxon Pte Ltd公司的发展小趣事

在电子行业日新月异的背景下,Flextronics(Flexxon Pte Ltd)始终将技术创新视为企业发展的核心动力。公司投入巨资于自动化生产线、智能制造系统和物联网技术的研发,实现了生产过程的智能化和数字化。这一举措不仅提升了生产效率,还使得Flextronics在定制化生产、快速响应市场变化方面具备了显著优势。随着5G、物联网等新兴技术的兴起,Flextronics更是积极拥抱变革,与多家科技公司合作,共同推动电子产品的创新与发展。

问答坊 | AI 解惑

我的大学六年-------励志篇

在哈尔滨工程大学六年,我在学校电子创新实验室呆了四年,这四年里创新实验室给我提供了良好的学习环境和完善的实验设备;在与众多电子爱好者的交流中,使我学到了更多的专业知识;在学校老师们的教导下,让我学会了如何做一名合格的大学生。因此, ...…

查看全部问答>

1602不显示是什么原因?

小弟是菜鸟初学单片机,写了个1602的程序可是不能用,于是借用别人写好的程序(那个人的程序可以用),可是载到我的单片机里面就不能用,1602就第一行全部显示方块,第二行空白,这是什么原因,哪位高手可以点拨点拨小弟,小弟感激不尽。…

查看全部问答>

问个和字库有关的问题

我手头上有16*16的字库,就是HZK16。 但是我应该怎么用C语言写程序把他转成我需要的数组呢??? 给个思路。。。。。。谢谢 …

查看全部问答>

字符串行拆分问题

我有一个字符串,是这样的。每行结束符是回车,16进制是OD OA,我想把以下的字符串按行 拆分,并且是在WINCE下执行,请教个位高手,有什么办法。C++环境。 123,adc,d3dse,gd,cdewd,wqeds 23432,wddw3,34dsc,322,ssdre4,wqde3 fkdie,al ...…

查看全部问答>

关于EVC中显示中文的问题

我有两个EVC工程,在一个中我在静态文本框中输入中文就可以显示,可在另一个工程中也是静态文本框可中文就是乱码,请问各位大侠是怎么回事了。是不是少按了啥东西哟。还是要在那设置哟,小女子先谢谢各位大侠了哟,…

查看全部问答>

STM32与ARM的关系?

                                 STM32与平常说的ARM到底是怎么样的关系?求解释…

查看全部问答>

富士通FRAM心得提交-ATMEGA32A操作MB85RS64

本帖最后由 digitaltek 于 2013-12-29 11:24 编辑 ↓原来用的SPI通讯的FLASH小板子,使用的是95256 ↓换上申请的样片MB85RS64, WP和HOLD直接连VDD了 ↓搭的硬件测试环境,MB85RS64+ATMEGA32A小板+AVR DRAGON仿真器 ↓ATMEGA32A小板子 ...…

查看全部问答>

CC2530如何在单片机程序中获得secondary IEEE地址

  NLME_GetExtAddr();     获得设备的64位IEEE地址   NLME_GetCoordExtAddr();   获得设备父节点的IEEE地址 Zstack库函数中有这两个函数来获取IEEE地址。 但通过 smartRF flash programmer可 ...…

查看全部问答>

TI首届低功耗设计大赛QQ交流群,欢迎加入!

TI首届低功耗设计大赛QQ交流群:224276144。 欢迎对大赛有兴趣,或者正在玩金刚狼开发板(MSP-EXP430FR5969 LaunchPad)的网友加入本群一块交流! …

查看全部问答>