- 博客(24)
- 收藏
- 关注
原创 Flash存储访问与ECC校验过程
我开始没有想明白为什么许不需要低3位的地址,后来意识到是因为ECC一次性读取64位数据(8字节),而地址的按照字节寻址的,也就是说地址为0x0000000000000000000000,0x0000000000000000000001...0x0000000000000000000007,分别对应了第一个到第八个字节,而ECC一次性读取这八个字节的内容,所以低三位000~111是可以忽略的,因为ECC在存储的时候不对更小的单元(小于64位的数据)进行存储。
2025-04-01 18:55:38
771
原创 F280049C实现ecc功能——关于ecc的计算问题
之前我读取连续四个地址的64位数据,然后计算ecc的结果不正确,上面的代码分别计算了低64位和高64位ecc值,一共是128位。为什么要进行这样的分段呢?这16位的ECC分别来自高64位数据和低64位数据,因此在实现过程中需要分为两个数据段来进行操作(可以理解为以Buffer[0]和[1]作为低64位,然后Buffer[2]和[3]作为高64位,为了计算完整个扇区的数据编写循环即可)。这128位数据包含了低64位的数据Data[63:0]和与之对应的8位ECC[7:0];
2025-01-21 10:46:46
198
原创 Flash API例程使用遇到的问题总结
计算一个8位ecc效验码确实需要四个连续内存中存储的数据,但是在实际计算中它采用的是先获取Buffer32[0]和[1]转换成64bit数据,再读取[2]和[3]中的数据转换成64bit,再将两者拼接以得到四个连续内存中的64位数据。中提到,导入例程后发现不是所有的扇区都可以正常的使用,后来意识到是因为在cmd文件中,使用sector1-sector3来存储了程序的text.字段(默认的cmd中),因此使用上述三个扇区会出现问题,但是其他扇区可以正常使用。它一里面其实写的比较详细,就是在看的时候会忽略。
2025-01-15 16:24:23
577
原创 F280049C: 使用--ecc option验证ecc功能
按照文档中给出的描述,可以使用Fapi_DataOnly和Fapi_EccOnly模式来分别进行数据的写入和ECC的生成。通过下图CCS中对寄存器数据的查看,可以看到:SINGLE_ERR_ADDR_LOW中记录了出现错误的地址;根据技术参考手册给出的寄存器说明,FLASH_ECC_REGS中各个寄存器存储了ECC的各项信息(Table3-346)。通过ECC寄存器的数据,可以看到成功引入了数据错误,通过MemoryBrowser观察到数据没有出现问题,因此ECC可以实现数据纠错。
2025-01-14 17:32:52
327
原创 F280049C: ecc代码调试记录(开启ecc验错功能后)
开始查阅资料,有说是因为没有选择flash运行导致的,因为在TI提供的例程里,在烧录的时候显示的是FLASH和RAM,但是在我建立的新project里面,它显示的是Debug和Release。所以我认为出现这个问题仍然是由于FLASH中的内容copy到RAM中出现的问题,对代码进行逐行调试,发现是Decice_init()函数出现的问题,进一步查找将问题定位在了SysCtl_setClock(DEVICE_SETCLOCK_CFG);注释掉这行代码后,程序可以正常运行,进行flash擦除和写入的操作。
2025-01-14 10:43:11
895
原创 使用Likner output验证ecc功能(--ecc options使用)
为了显示更加详细的项目信息,需要在properties选择C2000Linker——>Advanced Options——>Diagnostic,然后勾选最下面的一项Verbose diagnostics(--verbose_diagnostics)。右键project,选择Properties——>C2000 Linker——>Advanced Options——>Linker Output,确保ecc打开(红框),然后点开绿色框内的图标添加修改的地址,以及希望翻转的位数。争取放假前把这块干完。
2025-01-13 14:15:37
611
原创 F280049C_FlashAPI-ecc功能实现——完成内存映射
右键project,进去properties,选择其中的C2000linker——>Advanced Options——>Linker Output,Control whether ECC generation is on or off(--ecc)选择on(默认是关闭状态),就开启了ecc功能。因为提供的cmd中直接是对flash的32个sector进行的定义,因此我就按照它的格式定义了32个ecc的存储位置。完成cmd文件的修改以后,警告消失,说明完成了对ECC的定义和使用。
2025-01-10 16:00:42
670
原创 ccs遇到部分程序无法放入内存问题Error Type #10099-D
由于.ebss和.esysmem都分配给了这块内存,但是它的大小为2048,这两部分的大小1542+1024>2048,因此esysmem没能被存储到相应位置。所以,我们需要为.esysmem重新制定位置。这个问题就说程序和内存不匹配,于是检查内存分配(Memory Allocation),点击View——>Memory Allocation,然后鼠标点击程序中的任意位置,就会出现内存的分配情况。点开红色部分,可以看到现实了.esysmem出现问题,回到cmd文件中可以看到它被分配给了RAMLS5。
2025-01-08 13:56:10
527
原创 flashapi_ex1_program_auto使用记录(二)(Flash常用函数作用)
再将Bank0设置为‘active’后,使用Fapi_issueAsyncCommandWithAddress()函数对特定位置中的数据进行擦除(guidebook中对该函数的解释:Issues an erase command to the Flash State Machine along with a user-provided sector address. 使用用户提供的扇区地址向闪存状态机发出擦除命令)。因为直接copy的例程,所以到Flash_APIguide中去看了它对函数的介绍。
2025-01-07 15:14:11
688
原创 TI例程flashapi_ex1_program_autoecc使用记录
在数据手册的8.3Memory部分中的8.3.3Flash Memory Map中给出了Flash的内存分配表(Table8-3),这个表给出了地址和flsh内存的对应关系,比如说我在后续可能会需要对ECC进行操作,那我通过这个表就可以找到flsh扇区对应的ECC区域,来读取这部分的数据。根据Table8-3的信息,可以找到BANK0_SECTOR6对应的校验区域为0x1080C000,并且由于后续可能需要使用ECC数据进行一些计算,我需要添加代码来取出其中的数据。pwd=jyri 提取码: jyri。
2025-01-06 19:43:02
472
原创 ccs找不到import project选项,以及导入项目出现问题
根据这个路径找到其中的.metadata文件夹,将其删除,再打开ccs就可以导入上述工程了。Q2:导入程序的时候出现问题,一般是因为导入了相同路径的project。点开如下窗口,选择CCS Edit,点Open,界面就回到了初始状态。
2025-01-02 17:51:37
650
原创 CCS调试遇到:Break at address “0x3fbd92” with no debug information available...问题
因为老头懒得下载control suite,就想直接让我们给他一个能运行的project,所以我先得把例程里面涉及到的文件都给复制到了project里面。开始查阅资料,有说是因为没有选择flash运行导致的,因为在TI提供的例程里,在烧录的时候显示的是FLASH和RAM,但是在我建立的新project里面,它显示的是Debug和Release。然后找到Sysctrl.c文件,在我使用的例程里面它叫sysctl.c,感觉就是找关于system control的文件,把memcpy函数添加进去。
2025-01-02 15:56:15
497
原创 Mathtype无法使用-word中出现error‘48’,文件未找到:MathPage.WLL
今天打算写毕业论文,因为之前使用的mathtype是那种30天试用版(因为顺手就有安装包就没有去官网下载),然后按照给的方法顺延试用期以后出现了文件未找到:MathPage.WLL的问题,导致在word中无法使用Mathtype了。最后,总结下遇到这个问题的解决方法,直接搜索找到STARTUP文件夹,然后分别将Mathtype安装路径中的MathType Commands 2016.dotm和MathPage.wll文件复制到STARTUP文件夹和其上一级文件夹中(在我的电脑里是Office16)。
2024-12-30 17:08:24
928
原创 Pycharm变量窗口查看以及批量注释
今天继续跑python的代码,开始是通过console来输入指令查看数据,但实在太麻烦了。就很怀念matlab的数据窗口,查了以下python也有这个功能,不过需要进行简单的设置才可以实现。接下来回倒项目页面,点击下面的Python Console界面,可以看到左边框处有类似眼镜的图标,选上它,就可以看到变量窗口了。python使用#对代码添加注释,在某些需要批量注释的情况下,先选中想要注释的多行代码,再使用快捷键ctrl+/就可以完成代码的注释和取消注释。ps:今天一直在画图,有时间再整理个绘图指令。
2024-12-26 15:04:39
691
原创 Pycharm环境配置
最近师弟期末周,有个大作业要用python,正好我电脑之前装了pycharm,然后帮他跑了下代码,记录下配置环境的时候遇到的问题。
2024-12-25 22:21:36
2603
原创 ccs调试
以往写程序的时候使用的基本都是名为generic_ram_ink.cmd的文件,但在编译过程中会出现如下警告:#10247-D creating output section "ctrl_data" without a SECTIONS specification。我在新建工程的时候喜欢把它提供的所有cmd文件都先复制进去,因为这样在遇到这种问题的时候可以直接搜索来确定在哪一个cmd文件中定义了名为ctrl_data的字段,然后把其他不需要的文件exclude from project就可以了。
2024-03-22 12:26:43
1443
1
原创 fpga学习——实现LED流水灯效果
LED闪烁的本质就是输入电平的翻转,因此想要让LED灯按照我们期待的频率闪烁,需要根据板子的系统时钟和LED电平翻转频率之间的关系来实现。实现LED的流水灯效果是入门的基础操作,所谓流水灯就是要让LED按照固定的频率依次闪烁,说到可能可能之前我们编写的计数器程序(实现LED翻转)能够帮助我们实现LED的流水灯效果。此时需要注意将LED的数据形式由reg更改为wire类型,因为在这个方法下LED信号是由译码器的输出决定的,是由其他激励控制的信号,因此需要更改为wire数据类型。
2024-02-22 13:35:33
2930
1
原创 fpga学习 使用Vivado遇到的一些小问题
bit文件是FPGA的可执行文件,因此需要先将我们编写的内容转化为bit文件,点击"PROGRAM AND DEBUG"中的"Generate Bitstream",就完成了可执行文件的生成。文件3后面会显示一个target,说明这就是在烧录中的目标文件(告诉板子管脚怎么对应),如果一个文件中存在多个xdc文件,我们需要根据实际的情况去我们需要的是哪个文件。右键"此电脑"——"管理",弹出如下对话框,点击"设备管理"——"通用串行总线控制器",查看是否能够检测到我们的JTAG。
2024-02-21 13:19:31
510
原创 fpga学习day4 开发板到啦~使用viavdo进行管脚约束
bit文件是FPGA的可执行文件,因此需要先将我们编写的内容转化为bit文件,点击"PROGRAM AND DEBUG"中的"Generate Bitstream",就完成了可执行文件的生成。文件3后面会显示一个target,说明这就是在烧录中的目标文件(告诉板子管脚怎么对应),如果一个文件中存在多个xdc文件,我们需要根据实际的情况去我们需要的是哪个文件。右键"此电脑"——"管理",弹出如下对话框,点击"设备管理"——"通用串行总线控制器",查看是否能够检测到我们的JTAG。
2024-01-24 14:04:28
2134
1
原创 fpga学习day3 LED灯翻转(计数器)
在代码实现上,需要先定义LED用到的输入输出端口(对LED_flash模块进行定义),需要用到系统时钟,低电平复位信号(ResetL=0时,所有操作复位)。我们可以采用计数器的方式,对系统的时钟周期进行计数。一个系统时钟周期为20ns,LED端口的信号周期为1ms(0.5ms进行翻转一次),也就是当系统时钟经过25000个周期后,LED端口的信号需要翻转一次。LED闪烁的本质就是输入电平的翻转,因此想要让LED灯按照我们期待的频率闪烁,需要根据板子的系统时钟和LED电平翻转频率之间的关系来实现。
2024-01-19 19:28:03
729
1
原创 FPGA开发流程以及Vivado的使用(一)
但我的仿真时间设定的是1600ns,但是仿真却只进行了1000ns,此时点击下图中红框圈出的RUN ALL按键,再进行一次仿真,可以看到右上角现实的时间变成了1600ns。如过使用的是XILINX的板子那么就需要用Vivado作为开发工具,如果使用的是Altera的板子那么就使用Quaturs。design sources对应的就是我们的设计文件,下面的simulation sources对应的就是仿真文件。师兄推荐使用zynq7000系列的开发板,因此主要针对Vivado的使用进行一个简单的介绍。
2024-01-16 15:37:44
1466
1
原创 mathtype公式自动编号遇到的问题
删掉章节后的分节符,把它插入到后面的文字里,可以插入到任何位置,因为我们后续会把它设置为隐藏状态。解决方法:在每一章添加分隔符,个人理解为通过添加分节符的方式告诉mathtype到什么地方式新的一章,应该改变公式的编号。但在操作过程中没有跳出第二步中mathtype插入公式编号的窗口(上图),导致在后续敲公式的时候出现的编号并不是我们希望的(节-公式的编号)。但是注意:不要直接在章接后面添加分节符,否则目录会出现问题,直接在章节下的段落中添加是最好的。我们在对目录进行更新,之前的分隔符就会消失了。
2023-10-23 16:25:20
4930
2
原创 ccs11.0.1使用controlSUITE中的IQMath库过程中遇到的问题
因为需要做电机无位置传感的实验,需要用到controlSUITE中的smopos.h和smopos_const.h,这两个函数使用了iq数据格式,因此需要添加IQMATH。使用IQmath首先需要更改cmd文件,"C:\ti\controlSUITE\device_support\F2837xD\v210\F2837xD_common\cmd\2837xD_RAM_IQMATH_lnk_cpu1.cmd",然后将之前使用的cmd文件删除。添加IQMath.lib,IQMath.h,到之前的程序中。
2023-09-30 20:12:15
634
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人