自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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初始化流程

调用到通用初始化函数ufshcd_pltfrm_init。

2025-02-07 11:14:07 891

原创 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

原创 通过ftrace抓取函数调用栈

【代码】通过ftrace抓取函数调用栈。

2024-12-26 18:29:20 342

原创 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

原创 python时间指令

如果不设置会显示一个错误的时间。

2024-11-11 09:44:26 121

原创 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

原创 眼图相关概念

其中ATE和CTLE是Rx端的信号增强工具。TERM Termination 终端。ATT Attenuation 衰减。

2024-09-07 15:03:27 406

原创 RCU机制和关键API

reader通知reclaimer他已经进入RCU read-size critical section。

2024-09-03 23:14:56 405

原创 内核工作队列核心接口

【代码】内核工作队列核心接口。

2024-09-02 09:00:50 215

原创 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

内存管理资料手册ARM

内存管理资料手册ARM

2025-03-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除