
vc66vcc


0 访问量
0 原创专栏
0 资料
0 粉丝
个性签名:此E友还没有留下个性签名哦~
加入易百纳时间:2016-03-23
-
在海思后端芯片产品化的阶段,如果产品仅使用nand 或spi nand的话,直接使用烧录器一次性烧录镜像合集时,避免不了在程序镜像合集中追加产品信息字段文件的过程。 由于非nor flash器件,追加的产品信息文件,就算以raw格式文件合入,也必须要计算ECC。 在海思芯片手册上第四章存储器接口中提到了,如下描述: 4.3.5.2 8bit ECC 模式器件数据存储结构 2KB page size 8bit ECC 模式 2KB page size 配置下,写到 SPI NAND Flash 中的数据结构如图 4-35 所 示。把软件有效数据切成 2 个1040byte 的数据块,每 1040byte 数据计算一次 ECC。写 到 SPI NAND Flash 器件内部的数据结构会自动调整为 1040byte 数据+14byte ECC 码的 格式交替存放,共2 组,BB 信息放在 SPI NAND Flash spare 区的首两个字节。 我觉得计算ecc的算法都是以256 512 1024 等为基本块单位计算的,数据手册上的这个1040byte计算一次ecc,这算法怎么写?多出的这16字节如果处理,剔除吧不合理,再补齐一次1024吧又有点过分。大家对此有什么理解吗? 在uboot和内核中参看过这一块的源码,貌似是驱动器自己转换的格式,和源码无关啊还是我眼瞎没看到 相应的源码。2018-05-291 0 1949
-
最近同事需求内存检测工具,打算在HI3536 Hi3535等平台上移植一下valgrind。 移植valgrind-3.12.0到最后挂载程序运行是都提示Illegal instruction 以3535平台为例,移植过程参考网友的http://blog.csdn.net/lizhangping/article/details/51833997这个帖子 解决了valgrind failed to start tool 'memcheck' for platform 'arm-linux': not a direcory问题by export VALGRIND_LIB=XXX/../valgrind/lib/valgrind 解决了/lib/下so为strip后的问题,valgrind必须使用为裁剪过的库 从SDK中找到为裁剪的so文件替换文件系统中已裁剪过的动态库,重新制作了squash的文件文件系统 带-g编译了一个内存泄漏的小demo,挂着跑,出现如下问题: # ./valgrind ../hello valgrind: failed to start tool 'memcheck' for platform 'arm-linux': No such file or directory # export VALGRIND_LIB=/mnt/valgrind/lib/valgrind # ./valgrind ../hello ==695== Memcheck, a memory error detector ==695== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al. ==695== Using Valgrind-3.12.0 and LibVEX; rerun with -h for copyright info ==695== Command: ../hello ==695== ==695== ==695== Process terminating with default action of signal 4 (SIGILL) ==695== Illegal opcode at address 0x38092674 ==695== at 0x4000790: ??? (in /lib/ld-2.11.1.so) ==695== ==695== HEAP SUMMARY: ==695== in use at exit: 0 bytes in 0 blocks ==695== total heap usage: 0 allocs, 0 frees, 0 bytes allocated ==695== ==695== All heap blocks were freed -- no leaks are possible ==695== ==695== For counts of detected and suppressed errors, rerun with: -v ==695== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) Illegal instruction 尝试过的解决方法 1.观察valgrind的make过程发现 -fno-builtin -marm -mcpu=cortex-a8 -O2 -g 查看3535编译平台信息CFLAGS += -march=armv7-a -mcpu=cortex-a9 将所有Makefile中cortex-a8 改为cortex-a9 shell脚本如下 sed -i "s/cortex-a8/cortex-a9/g" `grep "cortex-a8" -rl ./` 观察到make时 cortex-a8 已被改为cortex-a9 但是问题依旧。 查资料查到valgrind支持armv7 以上平台,但是出现这个操作码不识别的情况是什么原因,平台架构都已经配置正确了啊。 有移植成功的或者有怀疑对象的童鞋欢迎留言指导。先行谢过。2016-11-297 0 6054

共2条