自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 Linux驱动学习---互斥和竞争

摘要 本文介绍了Linux驱动开发中处理竞态的几种主要方法:自旋锁、seqlock和RCU。自旋锁适用于不可休眠代码,在不同系统配置下行为不同但需按多核标准使用。seqlock实现无锁读,写入者优先,读取者通过版本号验证数据一致性。RCU通过读取-复制-更新机制实现高效读取,但仅适用于读多写少场景。文章还对比了睡眠等待型(信号量/互斥锁)、原地打转型(自旋锁)和无锁型(kfifo/seqlock)同步机制的特点及适用场景,强调正确使用锁的重要性以避免死锁。

2026-05-19 22:05:54 673

原创 Linux驱动开发学习---移植uboot、内核及根文件系统

这里使用的开发板是正点原子IMX6ULL的mini板,使用的LCD是4.3寸800x480的。移植是为了后续的驱动开发,这里就不分析代码了,直接用正点原子给的代码移植即可。

2025-08-10 23:10:44 939

原创 正点原子imx6ull裸机学习---12、4.3寸触摸屏驱动以及pwm背光

看视频说4.3寸屏幕的触摸芯片是GT9147,但是无论怎么修改上电后的RST和INT时序,I2C地址一直是0x14(七位地址),还以为是RST和INT脚接了上拉电阻的原因。最无语的是,包括它视频例程中写的寄存器映射值也是对应GT1151,但文件命名是GT9147。我说怎么寄存器映射对不上,原来是GT1151Q的。仍然会继续进行坐标计算,并输出下降沿, 但不更新坐标信息区的内容。若主控一直未读走坐标,则。GT1151是基于I2C通信的,当有坐标数据时会触发中断,需要注意的是。,B站视频居然也没修改过来。

2025-07-27 13:41:28 805

原创 正点原子imx6ull裸机学习---11、SPI驱动MPU6500

这里使用mini板配置SPI,来驱动MPU6500,采用的是。尝试配置过硬件片选,很容易出问题,不建议使用硬件片选。软件片选可以支持更多的设备,而且配置简单。

2025-07-18 13:47:50 804

原创 正点原子imx6ull裸机学习---10、I2C实验驱动MPU6500

由于我使用的是mini板,没有AP3216C,又刚好手头上有一个MPU6500,所以本次实验使用I2C驱动MPU6500,并在LCD屏幕上实时显示。我看视频中有些地方逻辑不是很明白,所以自己照着手册改了一版I2C程序。

2025-07-12 00:01:43 655

原创 正点原子imx6ull裸机学习---9、lcd实验

屏幕接口关键信号线如下:RGB LCD 一般有两种驱动模式:DE 模式和 HV 模式,这两个模式的区别是 DE 模式需要用到 DE 信号线,而 HV 模式不需要用到 DE 信号线,在 DE 模式下是可以不需要 HSYNC 信号线的,即使不接 HSYNC 信号线 LCD 也可以正常工作。屏幕一帧图像的扫描图如下:屏幕每次发送一行或一帧图像时需要一定的反应时间,其中VBP(tvb)、HBP(thb)、VFP(tvf)、HFP(thf)都是等待反应的时间,保证图像有效显示。

2025-06-27 22:37:45 1526

原创 正点原子imx6ull裸机学习---8、UART串口实验

本实验选择PLL3 480MHz 六分配之后 为UART_CLK_ROOT。

2025-06-25 10:46:26 1951

原创 正点原子imx6ull裸机学习---7、定时器中断实验

EPIT定时器结构图如下:1、EPIT是32位的一个向下计数器。2、EPIT有三个时钟源,本实验选择选择ipg_clk(前面时钟实验已将其设置为66MHz)。3、可以对时钟源进行分频,12位的分频器,0~4095分别代表1~4096分频。

2025-06-23 21:38:03 569

原创 正点原子imx6ull裸机学习---6、外部中断

其中Cortex-A 内核 CPU 的所有外部中断都属于这个 IRQ 中断,当任意一个外部中断发生的时候都会触发 IRQ 中断,并通过中断ID来区分不同的中断。其中中断ID在imx6ull中,一共有160个,ID号分别是0~159,

2025-06-18 11:36:52 1763

原创 正点原子imx6ull裸机学习---5、时钟配置

IMX6ULL的时钟源有两个:24M外部晶振和32.768K晶振,其中32.768K晶振用于内部RTC模块使用。24M外部晶振用于内核和各种外设使用,是时钟树的根源。

2025-06-14 21:44:54 831

原创 正点原子imx6ull裸机学习---3、Cmake构建BSP工程

二、CMakeLists.txt文件编写。imx6ul_bsp.cmake文件。三、编写run.sh执行脚本。

2025-06-11 22:20:49 367

原创 正点原子imx6ull裸机学习---4、led灯、蜂鸣器、按键实验

模式时),启用 SION 可以确保你也能读取到输出驱动后的实际引脚状态(即“回读”功能)。但在输出模式下,回读的通常是输出缓冲器的状态,不一定反映外部引脚的真实状态(如果外部电路很强)。_CTL_PAD_GPIO1_IO03是设置GPIO1_IO03的电气属性。_CTL_PAD_GPIO1_IO03的bit3~0设置为0101=5,这样GPIO1_IO03就复用为GPIO。设置GPIO1_DR寄存器的bit3,为1表示输出高电平,为0表示输出低电平。消除输入信号抖动(如按键抖动),在噪声环境中稳定信号。

2025-06-11 13:09:40 435

原创 正点原子imx6ull裸机学习---2、C语言环境设置并采用cmake构建

Sp可以指向内部RAM,也可以指向DDR,我们将其指向DDR。处理器栈增长方式,对于A7而言是向下增长的(栈指针地址是减小的,故不能设置sp为0x80000000),设置sp指向0x80200000。需要在脚本中手动删除,并且cmake中会指定start.S和main.c的链接顺序,无需再脚本中再指明。在操作系统上开发GCC默认链接系统提供的脚本,而裸机开发则需要自己设定。.note.gnu.build.-id:标识可执行文件的构造信息。链接脚本描述了要连接的文件,以及链接顺序,和链接首地址。

2025-06-10 20:54:19 319

原创 正点原子imx6ull裸机学习---1、从USB口进行代码烧录

本次学习的开发版是正点原子的,由于没有SD卡的缘故,在进行裸机开发学习时采用来USB烧录代码。按如下步骤进行。

2025-06-06 19:36:00 943 8

空空如也

空空如也

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

TA关注的人

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