当前位置: 首页 > news >正文

图片外链上传网站美篇app怎么制作

图片外链上传网站,美篇app怎么制作,WordPress管理app,网站服务器共享的 vpstitle: 踩坑记 BSS段的初始化 category_bar: true categories: blog tags:embedded date: 2023-10-20 19:23:05 前言 接手一个项目#xff0c;调试全靠串口日志#xff0c;测试同事测试产品的时候无法拿到日志#xff0c;刚好产品RAM够大#xff0c;且刚好有SD卡。所以就… title: 踩坑记 BSS段的初始化 category_bar: true categories: blog tags:embedded date: 2023-10-20 19:23:05 前言 接手一个项目调试全靠串口日志测试同事测试产品的时候无法拿到日志刚好产品RAM够大且刚好有SD卡。所以就诞生了将日志缓存在RAM上在特定条件下将它写到SD卡上的想法。 . . . 开工。 . . . 写完代码之后发现机器偶尔会无法启动无法开机无任何日志。 . 有的时候是烧录完成代码后重启无法启动有些情况下是烧录完成代码后运行正常放置一段时间后无法启动。 . 有时候有些无法启动的机器放置一段时间又成功启动。 . . . 一段一段代码屏蔽编译验证发现一个非常无法理解的事TFCardLogBufferPut函数注释后设备可以正常启动。 . . . 看代码 #define TF_CARD_LOG_BUFFER_SIZE (64*1024ul) uint8_t tfCardLogBuffer[TF_CARD_LOG_BUFFER_SIZE] {0}; uint32_t tfCardLogBufferIndex 0;void TFCardLogBufferPut(uint8_t data) {tfCardLogBuffer[tfCardLogBufferIndex] data;tfCardLogBufferIndex;if( tfCardLogBufferIndex(sizeof(tfCardLogBuffer)/sizeof(tfCardLogBuffer[0]))-1 ) {tfCardLogBufferIndex 0;} }. . . 我实在无法理解这段代码是如何导致设备无法启动的后面搁置了一段时间遂归结于小众芯片不完善导致。 . . . 但是后面这个需求实在是过于旺盛遂重新开始验证代码。 当时代码是这样的 // main.c int main(int argc, char **argv) {hal_uartInit();ax32xx_uart0SendByte(a);ax32xx_uart0SendByte(b);hal_uartSendData(1);hal_uartSendData(2);ax32xx_uart0SendByte(c);hal_sysInit();//.... some code here }// uart.c void hal_uartSendData(u8 data) {ax32xx_uart0SendByte(data);TFCardLogBufferPut(data); }void ax32xx_uart0SendByte(u8 data) {R_UART_DATA0 data;while((R_UART_PEND0 0x2)0);R_UART_PEND0 | 1; }#define TF_CARD_LOG_BUFFER_SIZE (64*1024ul) uint8_t tfCardLogBuffer[TF_CARD_LOG_BUFFER_SIZE] {0}; uint32_t tfCardLogBufferIndex 0;void TFCardLogBufferPut(uint8_t data) {tfCardLogBuffer[tfCardLogBufferIndex] data;tfCardLogBufferIndex (tfCardLogBufferIndex(sizeof(tfCardLogBuffer)/sizeof(tfCardLogBuffer[0]))-1) ? 0 : tfCardLogBufferIndex1; }运行后日志是这样的 # 正常运行 的日志 ab12c ...# 无法启动 的日志 ab1. . . 后面我就猜想了很多 这个soc不能支持这么大的数值 64KB这个位置的内存被改写了和冷启动热启动有关芯片异常 . . . 后面我猜想试试把TFCardLogBufferPut函数里面的tfCardLogBufferIndex的数值和data数值输出出来看看。 . . 这一看不得了越界了 代码 输出日志 ab1z31m00327300. . . 这个tfCardLogBufferIndex越界了啊而且初始化赋0并没有成功这就非常坑爹了 . . . 后面尝试在调用这个函数之前再次赋0发现程序运行正常设备也正常启动。 查看map文件这个数组和变量也是存放在BSS段的这就非常令人费解了。 . . . . . 看到这里我直接就怀疑就是这个芯片的锅。 但是别急这还不是让人最震惊的后面还有让人更加鼻血飙升的。 . . . . . . . . . . . . . 最后找FAE排查问题很久最后发现BSS段在hal_sysInit函数内初始化。 看代码 void ax32xx_sysInit(u32 *saddr,u32 *eaddr) {debg(sys init\n); // 这个debg会调用 hal_uartSendData 函数输出日志//...ax32xx_wdtClear();//-----cache setax32xx_sysIcacheInit();ax32xx_sysDcacheInit(); //-----bss clearax32xx_sysBSSClear();// ... }. . . 实在是震惊无法理解这个RAM的初始化为什么放在main函数里面实在无法理解进入main函数了c语言环境都没有OK。 最烦的就是这种xx芯片总是会有一些让人血压飙升的操作。 . . . . . 教训 在对数组进行访问的时候一定要先检查范围。 // 原函数 void TFCardLogBufferPut(uint8_t data) {tfCardLogBuffer[tfCardLogBufferIndex] data;tfCardLogBufferIndex (tfCardLogBufferIndex(sizeof(tfCardLogBuffer)/sizeof(tfCardLogBuffer[0]))-1) ? 0 : tfCardLogBufferIndex1; }// 改后 void TFCardLogBufferPut(uint8_t data) {if( tfCardLogBufferIndex(sizeof(tfCardLogBuffer)/sizeof(tfCardLogBuffer[0]))-1 ) {tfCardLogBufferIndex 0;}tfCardLogBuffer[tfCardLogBufferIndex] data;tfCardLogBufferIndex; }
http://www.zqtcl.cn/news/339594/

相关文章:

  • 滨州正规网站建设公司用r语言 做网站点击热力图
  • php网站模板wordpress自定义头像上传
  • 江油市规划和建设局网站一个app网站
  • 郑州网站建设up188WordPress响应式幻灯片
  • 幸运28网站代理怎么做网站后期维护工作包括哪些
  • 西安网站建设seo网络营销的职能
  • 大型网站建设哪家服务好dll网站服务
  • 怎样建设网赌网站江苏外贸网站建设
  • 做外贸有哪些网站怎么在360自己做网站
  • 企业网站建立费用 作什么科目深圳服装外贸公司
  • 淘宝网站建设代码视频开放api
  • 清廉企业建设骨科医院网站优化服务商
  • 公司网站建设开源平台网站建设推来客在哪里
  • 本地电脑静态网站建设半年工作总结
  • 潮州哪里做网站html in wordpress
  • 在浏览器上建设网站平面作品集展示图片
  • 建设网站的技术手段天津泰达建设集团网站
  • 怎样做读书会网站广州公司注册在线
  • 多个网站做计划响水哪家专业做网站
  • 中国建设基础设施总公司 网站怒江网站建设
  • 做电脑网站手机能显示不出来怎么办有友情链接的网站
  • 潘家园做网站的公司网络营销管理系统
  • 如何在各大平台推广博客网站seo
  • 网站地图那么建设国内哪个网站做水产比较大
  • 可以做图片视频的网站网站策划网
  • 在阿里云做的网站怎么移动南宁seo咨询
  • 电子商务网站开发课程设计论文温州市微网站制作电话
  • 常州住房和城乡建设部网站网站开发哪家公司口碑好
  • 网站备案 登录名巴中交通建设有限公司网站
  • 门户资源分享网站模板软件网站开发市场前景