- 博客(19)
- 收藏
- 关注
原创 本地编译后的执行文件导入板子执行
如:arm-gnu-toolchain-12.2.rel1-x86_64-aarch64-none-linux-gnu, 若使用yotco编译,则在build目录下可以找到这个名字,通过这个名字可以在arm官网搜到下载。如本地编写一些测试case,将其导入开发板后,观察执行结果,用来确定是否和自己当前分析的问题是同一个问题。1. 下载现在和当前开发板使用的软件相同的编译toolchain。2. 本地解压后,放到环境目录下. 或者通过命令。4. 将编译后的test执行文件导入开发板。
2025-05-22 11:18:47
225
原创 UFS linkup
在device initialization and boot procedure sequence diagram中, UFS层面发送出去的第一个握手动作是host发送NOP OUT指令到device,然后device回复一个NOP IN . 在这个操作之前, host和device之间, 为保证更为底层的uni-pro和M-PHY层链路通畅所做的操作称为linkup。
2025-01-24 16:18:37
751
原创 system heap内存申请
默认情况下,为每个heap创建对应的文件,例如:用户态程序可以直接操作节点,通过ioctl调用到内核态进行内存申请。
2025-01-20 14:10:16
784
原创 Smmu API
实现:1. ops->map_pages(domain, iova, paddr, pgsize, count, prot, gfp, mapped); (arm_smmu_map_pages)2. ops->map_pages(ops, iova, paddr, pgsize, pgcount, prot, gfp, mapped)dma->ops赋值启动解析iommu节点并给dma-ops赋值
2025-01-06 10:44:28
271
原创 UFS Descriptors And Attributes
rom代码相关配置ufs_init函数配置boot wlun enable(descriptor)load_image方法设置boot wlun的attribute,将某个分区设置为active发送test unit ready 的 scsi cmd, 确定能正常访问参考内核函数讨论上述三种配置的读写过程。
2024-12-19 20:36:27
1186
原创 Bio stack
Stackread_pages函数会调用到具体文件系统的readahead实现(通过aops->readahead(rac);ext4实现三个方法。
2024-12-18 19:16:23
382
原创 嵌入式软件系统使用gcov进行覆盖率统计
运行如此编译的镜像后,插入的计数器代码会统计基本块(basic block)的执行次数,并将这些信息统计到.gcda文件中(gcc coverage data的缩写)其中的gcno文件(gcc coverage note)是gcc编译过程中,-使用fprofile-arcs编译选项时,会对代码进行编译插桩,生成.gcno文件.综合上述两个文件,并解析原始的.c代码,通过lcov渲染工具和genhtml等工具就可以生成可见的代码统计报告。gcov是gcc自带的统计代码覆盖率工具,基本流程如下。
2024-12-11 16:03:42
384
原创 UFS POWER
linux启动过程中还有一个devfreq framework,需要后续分析。2. JESD223D的7.4 UIC Power Mode Change。
2024-12-09 18:24:12
398
原创 yocto recipes构建镜像
它是每个软件包在YOCTO中的唯一标识符,用于引用软件包的相关信息和构建目录$${PN}变量的值通常是软件包的名称,如“hello-world”。third-party-layers/meta-openembedded/meta-filesystems/recipes-utils/ufs-utils中已经定义有一个ufs-utils_1.9.bb文件, 则可以在自己的配方文件夹中创建一个名为ufs-utils_%.bbappend的文件。它允许用户在不直接修改原始配方的情况下,添加、覆盖或修改配方的功能。
2024-10-20 10:22:07
843
原创 UFS BSG
JESD220E中 chpater9 UFS UIC Layer: MIPI UNIPRO。即可控制host发送UIC command操作UFS PHY。勾选后,会生成用户态节点/dev/bsg/ufs-bsg0。使用工具ufs-utils。
2024-09-17 15:50:31
913
原创 Linux mtd原生测试工具MTD tests support
Linux Kernel menuconfig选择MTD tests support,只能选择到M。
2024-08-18 15:55:02
635
原创 fio工具测试flash IO
group_reporting 一般用于多线程场景使用,如果不使用且numjob大于1,则会打印每个线程的测试结果,导致log过多,使用这个选项后会统一到一个report中。-ioengine io引擎,表示不同的触发IO的方式,这里我们使用为MTD设备开发的mtd ioengine。-filename 表示测试的具体文件,这里我们使用/dev/mtd。-size 具体测试的数据大小,大小达到size后测试会自动停止。-bs block size,表示块设备的固有属性,块的大小。
2024-08-18 15:49:36
812
原创 C语言常用位操作宏函数
嵌入式软件工程师常需要配置寄存器的某些位,这些寄存器通常有指定的offset,在通常的32位或者16位中,某位或者某几位表示了一些特定的功能。软件工程师需要配置这些位用以完成特定的任务。如果可以通过宏函数进行封装,将能避免很多重复性的工作并且提高代码的可读性。
2024-08-04 15:04:20
423
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅