自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

张登雨的博客

学习笔记

  • 博客(33)
  • 收藏
  • 关注

原创 U-boot使用与启动流程分析

01课_U-boot分析与使用文章目录01课_U-boot分析与使用1、编译体验1.1、Linux系统启动分析1.2、打补丁、编译、烧写、试验2、Makefile进行分析2.1、uboot的配置过程2.2、uboot的编译、链接过程3、uboot启动第1阶段4、uboot启动第2阶段5、u-boot命令分析6、启动内核的过程分析6.1、读出内核6.2、启动内核6.2.1、uImage头部6.2.2、启动真正的内核1、编译体验1.1、Linux系统启动分析与PC启动过程对比:uboot的最目的:

2021-02-02 15:28:57 1363

原创 数码相框

项目01_文件浏览器_数码相框文章目录项目01_文件浏览器_数码相框1、系统框架2、字符2.1、字符的编码方式2.2、字符的点阵显示2.3、freetype2.3.1、reetype理论介绍2.3.2、在PC上测试freetype2.3.3、在LCD上显示一个矢量字体2.3.4、在LCD上显示几行文字3、额外项目_电子书3.1、电子书之效果及框架3.2、电子书之代码阅读及编写3.3、电子书之指针的操作3.4、电子书之链表的操作3.5、电子书之在PC上显示4、编写通用的Makefile5、使用多种方法支持多

2021-02-07 17:28:05 1834

原创 韦东山设备树临时笔记

临时笔记:(1) 下面是确定内核的虚拟地址、物理地址的关键信息, 感兴趣的同学可以自己看:vmlinux虚拟地址的确定:内核源码:.config : CONFIG_PAGE_OFFSET=0xC0000000 arch/arm/include/asm/memory.h #define PAGE_OFFSET UL(CONFIG_PAGE_OFFSET)arch/arm/Makefile textofs-y := 0x00008000

2021-02-07 16:55:15 159

原创 06课_实践操作

06课_实践操作文章目录06课_实践操作1、使用设备树给DM9000网卡_触摸屏指定中断1.1、介绍1.2、实验2、在设备树中时钟的简单使用2.1、设备树中使用时钟方法2.2、具体分析3、在设备树中pinctrl的简单使用3.1、pinctrl介绍3.2、pinctrl使用3.2.1、设备树中pinctrl节点3.2.4、驱动中想选择、设置某个状态的引脚3.3、具体分析4、使用设备树给LCD指定各种参数4.1、设备树中使用LCD介绍4.2、实验方法4.3、代码分析4.3.1、设备树中的描述4.3.2、代码

2021-02-07 16:51:30 152

原创 05课_中断系统中的设备树

05课_中断系统中的设备树文章目录05课_中断系统中的设备树1、中断概念的引入与处理流程1.1、ARM对异常(中断)的使用过程1.2、CPU的工作模式和状态2、Linux对中断处理的框架及代码流程简述2.1、中断介绍2.2、中断处理流程2.3、中断处理流程图3、中断号的演变与irq_domain3.1、原先确定中断号的方法3.2、新中断体系中使用中断4、示例_在S3C2440上使用设备树描述中断体验4.1、编译新内核4.2、老内核4.3、新内核4.4、设备树中描述中断5、示例_使用设备树描述按键中断5.1

2021-02-07 16:46:11 218

原创 04课_u-boot对设备树的支持

04课_u-boot对设备树的支持文章目录04课_u-boot对设备树的支持1、传递dtb给内核1.1、传内核参数介绍1.2、命令示例2、dtb的修改原理2.1、例子1. 修改属性的值2.2、例子2. 添加一个全新的属性2.3、fdt命令调用过程3、dtb的修改命令fdt移植3.1、体验移植好fdt命令的uboot3.2、移植fdt命令3.2.1、先把代码移过去, 修改Makefile来编译3.2.2、根据编译的错误信息修改源码3.2.3、fdt命令使用示例1、传递dtb给内核1.1、传内核参数介绍

2021-02-07 16:33:01 660

原创 03课_内核对设备树的处理

03课_内核对设备树的处理文章目录03课_内核对设备树的处理1、从源头分析_内核head.S对dtb的简单处理2、对设备树中平台信息的处理(选择machine_desc)2.1、简单处理简述2.2、函数调用过程3、对设备树中运行时配置信息的处理3.1、函数调用过程3.2、处理简述4、dtb转换为device_node(unflatten)4.1、dts中的各部分简述4.2、具体转换关系图5、device_node转换为platform_device5.1、简单介绍5.2、转换过程小结5.3、函数调用过程:

2021-02-07 16:29:47 469

原创 02课_设备树的规范(dts和dtb)

02课_设备树的规范(dts和dtb)文章目录02课_设备树的规范(dts和dtb)1、DTS格式1.1、语法1.2、DTS文件布局(layout)1.3、特殊的、默认的属性1、根节点2、/memory3、/chosen4、/cpus5、/cpus/cpu*1.4、引用其他节点1、phandle2、label1.5、例子1.5.1、覆盖1.5.2、引用2、DTB格式2.1、编译dts生成dtb2.2、数据存储模式2.3、dtb中在怎样表示dts1、DTS格式1.1、语法Devicetree node

2021-02-07 16:20:07 472

原创 01课_设备树的引进与体验

01课_设备树的引进与体验文章目录01课_设备树的引进与体验1、字符设备驱动程序的三种写法1.1、驱动编写流程1.2、指定引脚的三种方式1.3、编写驱动实例1.3.1、传统方法1.3.2、总线驱动设备模型1.3.3、设备树2、字符设备驱动的传统写法2.0、变量初始化2.5、led_open2.6、led_write2.1、分配/设置/注册file_operation2.2、入口函数myled_init2.3、出口函数myled_exit2.4、修饰3、字符设备驱动的编译测试3.0、设置PATH环境变量3.

2021-02-07 12:09:44 126

原创 移植2期驱动到 Linux3.4.2内核

04课_移植2期驱动到 Linux3.4.2内核文章目录04课_移植2期驱动到 Linux3.4.2内核1、移植DM9000C网卡1.1、尝试挂载NFS1.2、分析错误1.3、修改代码1.4、重启单板,启动内核2、移植LED和按键2.1、01_first_drv2.2、02_second_drv2.3、03_third_drv2.4、04_forth_drv2.5、05_fifth_drv2.6、06_sixth_drv2.7、07_buttons_all2.8、20th_chrdev_another3、

2021-02-06 18:16:58 376

原创 移植3.4.2内核

03课_移植3.4.2内核文章目录03课_移植3.4.2内核1、框架介绍及简单修改1.1、Linux启动过程1.2、配置内核2、修改分区及制作根文件系统2.1、修改分区2.2、制作新的文件系统2.2.1、交叉编译busybox2.2.2、安装库2.2.3、构建etc目录2.2.4、构建dev目录2.2.5、其他空目录2.3、制作jffs2映象文件2.3.1、修改制作jffs2映象文件的工具2.3.2、制作jffs2映象文件2.4、烧写新的jffs2文件系统3、支持yaffs文件系统3.1、获得源码3.2、

2021-02-06 17:44:37 146

原创 移植UBOOT总览

02课_移植UBOOT 2012.04.1文章目录02课_移植UBOOT 2012.04.11、初试1.1、解压、创建SI工程1.2、安装arm-linux-gcc-4.3.2交叉编译器1.3、体验编译2、分析启动过程之概述2.1、之前分析uboot启动时需要完成下列步骤2.2、最新的uboot启动过程也应该和上面类似2.3、具体分析1、首先查看arch/arm/cpu/u-boot.lds链接脚本2、如下图所示,看到uboot最开始会进入_start3、_start位于arch/arm/cpu/arm9

2021-02-06 17:06:56 341

原创 从0写bootloader

02课_从0写bootloader文章目录02课_从0写bootloader1、bootloader的目标:启动内核2、最简单的bootloader的编写步骤2.1、uboot第1阶段2.2、uboot第2阶段3、编写bootloader第1阶段3.1、在start.S中3.2、在init.c中4、编写bootloader第2阶段4.1、在boot.c中4.2、在init.c中4.3、在setup.h中5、改进6、测试uboot1、bootloader的目标:启动内核简化版本:2、最简单的boot

2021-02-06 16:18:03 498

转载 Markdown帮助列表

欢迎使用Markdown编辑器写博客官方链接撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + Shift + H无序列表:Ctrl/Command + Shift + U有序列表:Ctrl/Command + Shift + O检查列表:Ctrl/Command + Shift + C插入代码:Ctrl/Command + Shift + K插入链接

2021-02-05 21:22:12 121

原创 22_Linux 3.4.2 IIC驱动

22_Linux 3.4.2 IIC驱动文章目录22_Linux 3.4.2 IIC驱动1、框架介绍1.1、连接图1.2、IIC读写操作原理1.3、数据的双向传输1.4、2440的IIC控制器1.5、字符设备驱动框架1.6、IIC驱动框架1.7、IIC总线设备驱动模型2、框架编写代码2.1、定义一个i2c_board_info, 里面有:名字, 设备地址2.2、直接i2c_new_device, i2c_new_probed_device2.3、从用户空间创建设备2.4、前面的3种方法都要事先确定适配器(

2021-02-05 21:12:59 140

原创 21_应用调试方法

21_应用调试方法文章目录21_应用调试方法1、使用strace命令来跟踪系统调用1.1、体验strace简单操作1、解压缩:tar xjf strace-4.5.15.tar.bz22、开发板上装载驱动、使用strace跟踪系统调用:3、放入Ubuntu的/work/system中:4、执行:make5、再次make:出错6、再次make:出错7、再次make:成功8、重启开发板:reboot10、来创建modules:11、再来执行strace:12、来创建2.6.22.6目录:1.2、strace命

2021-02-05 16:57:23 1308

原创 20_驱动调试方法

20_驱动调试方法文章目录20_驱动调试方法1、打印1.1、printk1.1.1、分析打印过程1.1.2、流程1.1.3、分析内核打印流程1.1.4、举例1.1.4.1、使用自定义打印函数:myprintk1.1.4.2、使用原先打印函数:printk1.1.4.3、不显示内核启动打印参数1.2、自制proc文件1.2.1、proc介绍1.2.2、写自己的proc驱动程序1th:搭建基本框架2th:添加读函数3th:完成 cat /proc/mymsg4th:完成环形缓冲区、myprintk函数5th:

2021-02-05 16:51:42 1264

原创 19_裸板调试方法

19_裸板调试方法文章目录19_裸板调试方法1、点灯1.1、程序运行过程1.2、在head.S中加入点灯的代码进行调试2、串口打印2.1、硬件连接图2.2、在init.c中添加串口初始化和打印函数2.3、在head.S中添加打印2.4、在nand.c中将全局变量修改为局部变量3、JTAG调试器3.1、原理3.1.1、硬件接法3.1.2、调试方式:软件断点和硬件断点3.2、体验JTAG调试3.2.1、连接3.2.2、基本命令3.2.3、设置断点1、硬件断点:调试裸板的方法有三种:点灯、串口、JTAG调试器

2021-02-05 11:46:54 301

原创 18_热拔插驱动

18_热拔插驱动文章目录18_热拔插驱动1、介绍2、分析class_device_create函数3、示例3.1、装载buttons驱动3.2、卸载buttons驱动4、自动挂载U盘4.1、U盘介绍4.2、分析mdev4.3、写mdev.conf进行U盘测试4.3.1、文件装载4.3.2、U盘自动挂载到mnt目录1、介绍热拔插即:hotplug/uevent机制。问:在以前写的驱动程序中分配了主设备号,创建了file_operatinons结构体,为什么还要创建类?还要在类下面创建设备呢?答:以前

2021-02-04 21:48:09 877

原创 17_DMA驱动

17_DMA驱动文章目录17_DMA驱动1、DMA介绍2、dma驱动程序2.7、参数初始化2.1、构造主设备号2.6、dma对应的ioctl函数2.2、构造file_operations结构体2.5、dma中断处理函数2.3、入口函数s3c_dma_init中2.4、出口函数s3c_dma_exit中3、dma测试程序4、测试DMA驱动程序4.1、不使用DMA拷贝数据4.2、使用DMA操作拷贝数据1、DMA介绍DMA:Direct Memory Access,直接存储器访问我们知道,cpu同一时间

2021-02-04 21:37:23 971

原创 16_声卡驱动

16_声卡驱动文章目录16_声卡驱动1、原理1.1、原理图1.2、传输声音:数据接口IIS1.3、传输声音:控制接口L32、分析UDA1341的声卡驱动程序2.1、分析UDA1314驱动程序2.2、测试UDA1314驱动程序3、JZ2440上WM8976声卡驱动介绍3.1、对比UDA13413.2、wm8976芯片的控制接口4、编写WM8976驱动程序4.2、函数wm8976_write_reg4.1、函数init_wm89764.3、修改其他位置的代码4.4、测试wm8976的驱动程序4.5、播放mp3

2021-02-04 21:32:30 1163 1

原创 15_RTC驱动

15_RTC驱动文章目录15_RTC驱动1、分析RTC工作原理2、修改内核的RTC代码3、测试RTC1、分析RTC工作原理使用新的字符设备驱动程序框架分析RTC驱动程序:drivers\rtc\rtc-s3c.cs3c_rtc_init platform_driver_register s3c_rtc_probe /* 内核中有对应的平台设备,probe函数会被调用 */ rtc_device_register("s3c", &pdev->dev, ①&s3c

2021-02-04 21:18:56 469

原创 14_字符设备另一种写法

14_字符设备另一种写法文章目录14_字符设备另一种写法1、字符设备框架对比2、新的字符设备驱动程序编写2.1、在hello.c中2.1.1、确定主设备号2.1.5、定义测试所用的open函数2.1.2、构造file_operations2.1.3、告诉内核2.1.4、在出口函数hello_exit中2.2、在hello_test中2.3、修饰3、测试1th:2th:1、字符设备框架对比之前的字符设备驱动框架:缺点:修改后的框架:修改后:程序按照主设备号、次设备号来打开设备,这样同一个主设

2021-02-04 16:06:08 352

原创 13_Linux2.6 IIC驱动

13_Linux2.6 IIC驱动文章目录13_Linux2.6 IIC驱动1、i2c驱动框架2、编写驱动程序2.7、i2c实验的读写函数2.6、在file_operations结构体at24cxx_fops中:2.5、发现新的adapter或者driver之后调用函数at24cxx_detect:2.4、at24cxx_attach和at24cxx_detach函数:2.3、在i2c_driver结构体at24cxx_driver中:2.1、在入口函数at24cxx_init中:2.2、在出口函数at2

2021-02-04 16:02:07 134

原创 12_IIC裸板

12_IIC裸板文章目录12_IIC裸板1、IIC读写操作原理2、数据的双向传输3、2440的IIC控制器4、编写代码5、测试1、IIC读写操作原理黑色->主到从、红色->从到主写:1_START、2_设备地址(7位) | 方向(1位)、3_回应、4_数据(8位) | 回应、5_P(结束)读:1_START、2_设备地址(7位) | 方向(1位)、3_回应、4_数据(8位) | 回应、5_数据 | 回应、6_P(结束)方向:0->写 1->读START:SCL保持高电

2021-02-04 15:56:47 390

原创 11_DM9000C移植

11_DM9000C移植文章目录11_DM9000C移植1、介绍2、修改dm9000c驱动程序来移植2.0、包含头文件2.1、去掉一些信息2.2、函数dmfe_probe1中2.3、在dmf_open函数中2.4、修改入口函数2.5、修改出口函数3、测试修改好的驱动4、内存控制器4.1、不同位宽设备之间的连接4.2、内存控制器操作1、介绍DM9000C网卡原理图:问:怎样才能选中网卡芯片呢?答:只要CPU发出的物理基地址为0x20000000 到 0x28000000之间nGCS4就会变为低电平

2021-02-04 15:52:01 195

原创 10_虚拟网卡驱动

10_虚拟网卡驱动文章目录10_虚拟网卡驱动1、网卡驱动框架2、编写代码2.1、在模拟收包函数emulator_rx_packet中2.2、在发包函数virt_net_send_packet中2.3、在入口函数virt_net_init中2.4、在出口函数virt_net_exit中3、测试1th2th3th4th4th回顾字符设备驱动编写框架:回顾块设备驱动编写框架:1、网卡驱动框架app: socket------------------------------------------

2021-02-03 15:48:12 651

原创 09_NorFlash驱动

09_NorFlash驱动文章目录09_NorFlash驱动1、nor flash原理2、使用u-boot体验nor flash操作3、NOR FLASH驱动程序框架4、NOR FLASH识别过程分析5、代码编写6、测试6.1、测试1:通过配置内核支持NOR FLASH6.2、测试2: 使用自己写的nor驱动程序:6.3、测试3:内存分配flash1、nor flash原理原理图:Nor 和Nand 比较:其中CPU的addr1接到Nor Flash的addr0;Nand 启动时,CPU看到

2021-02-02 20:30:13 877 1

原创 08_NandFlash驱动

08_NandFlash驱动文章目录08_NandFlash驱动1、框架2、怎么写块设备驱动程序呢3、硬件原理4、uboot体验nand flash操作4.1、读ID4.2、读内容: 读0地址的数据5、Nand驱动框架6、编写驱动代码6.6、包含头文件6.5、定义变量6.4、分区表6.3、nand的操作函数6.1、入口函数s3c_nand_init中6.2、在出口函数s3c_nand_exit中7、测试实验2th:3th:4th:1、框架1 app : open,read,write “1.txt

2021-02-02 20:18:20 275

原创 00_字符设备驱动

05课_字符设备驱动文章目录05课_字符设备驱动1、介绍2、用户程序与驱动程序关联3、测试程序3.1、first_drv:点灯3.1.1、测试第一个驱动程序,手动选择主设备号3.1.2、测试,自动分配主设备号3.1.3、测试,自动分配主设备号,自动创建设备文件节点,自动创建设备文件3.1.4、编写点灯的驱动函数,将物理地址映射为虚拟地址3.2、second_drv:查询方式获取按键值3.2.1、原理3.2.2、代码实现3.3、third_drv:中断方式获取按键值3.3.1、原理3.3.2、程序实现代码3

2021-02-02 16:35:20 117

原创 制作最小根文件系统

04课_根文件系统文章目录04课_根文件系统1、启动第1个程序1.1、内核怎样启动一个应用程序1.2、体验测试文件系统1、加载uboot2、删除已有的文件系统3、启动内核4、现在重启内核,挂载文件系统2、init进程分析2.1、介绍2.2、init分析3、制作最小根文件系统3.1、配置、编译busybox1、解压busybox2、make menuconfig设置TAB补全功能3、修改Makefile设置交叉工具链4、安装3.2、构建最小根文件系统5、创建consol、null6、创建inittab7、安

2021-02-02 16:23:46 691

原创 内核配置裁剪及启动流程

03课_内核配置裁剪及启动流程文章目录03课_内核配置裁剪及启动流程1、内核打补丁、编译、烧写、试验1.1、解压1.2、打补丁1.3、配置1.4、uboot烧写uImage2、内核功能、结构,结合Makefile、Kconfig进行分析2.1、分析配置2.2、分析Makefile2.2.1、子目录下的Makefile2.2.2、架构相关Makefile2.2.3、.config文件2.2.4、顶层目录下Makefile3、分析内核启动过程3.1、分析arch\arm\kernel里的head.S3.1.0

2021-02-02 15:59:22 203

原创 实现一个简单的Bootloader

02课_从0写bootloader文章目录02课_从0写bootloader1、bootloader的目标:启动内核2、最简单的bootloader的编写步骤2.1、uboot第1阶段2.2、uboot第2阶段3、编写bootloader第1阶段3.1、在start.S中3.2、在init.c中4、编写bootloader第2阶段4.1、在boot.c中4.2、在init.c中4.3、在setup.h中5、改进6、测试uboot1、bootloader的目标:启动内核简化版本:2、最简单的boot

2021-02-02 15:34:34 1587

空空如也

空空如也

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

TA关注的人

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