
linux
ngany
这个作者很懒,什么都没留下…
展开
-
itop4412-u-boot移植(1)
参考:https://blog.youkuaiyun.com/hyyoxhk/article/details/81734733https://blog.youkuaiyun.com/sinat_20006769/article/details/79046194https://blog.youkuaiyun.com/weixin_40117614/article/details/83622503https://www.ji...原创 2019-04-27 00:47:49 · 823 阅读 · 0 评论 -
u-boot启动分析-start.s文件分析-arm汇编指令分析
194-197行: mrs r0, cpsr bic r0, r0, #0x1f orr r0, r0, #0xd3 msr cpsr,r0功能:设置CPU在SVC工作模式,获取最高等级的权限指令分析:mrs 将状态寄存器传送至通用寄存器类指令 格式:MRS{<条件码>}Rd,CPSR}SPSR 其中: ...原创 2019-04-08 12:14:25 · 394 阅读 · 0 评论 -
linux内核定时器
参考:《linux设备驱动开发详解》宋宝华-人民邮电出版社、itop4412驱动开发视频教程内核时钟基础知识:HZ:(系统时钟通过CONFIG_HZ来设置,范围是100-1000;HZ决定时钟中断发生的频率)内核的全局变量jiffies:(记录内核自启动来的节拍数,内核之启动以来,产生的中断数) jiffies/HZ :内核自启动以来的秒数使用 vi config_for_l...原创 2019-04-02 14:38:10 · 458 阅读 · 0 评论 -
linux中断处理程序架构--上半部与下半部
参考:《linux设备驱动开发详解》宋宝华-人民邮电出版社http://www.cnblogs.com/wang_yb/archive/2013/04/23/3037268.html中断处理程序架构设备的中断会打断内核中进程的正常调度和运行,系统对更高吞吐率的追求势必要求中断服务程序尽可能地短小精悍。但是,这个良好的愿望往往与现实并不吻合。在大多数真实的系统中,当中断到来时,要完成的工...原创 2019-04-02 14:35:20 · 1336 阅读 · 0 评论 -
start.S分析及arm的CPSR寄存器
一、CPSR概述ARM处理器共有37个寄存器。这37个寄存器按其在用户编程中的功能划分,可分为2类寄存器,即31个通用寄存器和6个状态寄存器。这6个状态寄存器在ARM公司文件中其名称分别为:CPSR、SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq和SPSR_fig。这12的作用分别如图1所示:所有处理器模式下都可访问当前程序状态寄存...转载 2019-04-08 00:34:56 · 831 阅读 · 0 评论 -
linux-I2C驱动(4)--编写驱动代码
开发板:讯为电子itop4412开发板,实测可行。示例代码:#include <linux/kernel.h>#include <linux/module.h>#include <linux/i2c.h>#include <linux/input.h>#include <linux/delay.h>#include &...原创 2019-03-28 20:02:11 · 1400 阅读 · 1 评论 -
linux-I2C驱动(3)--怎么构造一个设备
内容参照韦东山linux视频教程--Linux_3.4.2_IIC驱动4种方法注册设备1.通过总线号声明i2c设备都在内核编译种完成,修改内核重新编译,就能得到已经注册的设备1、定义一个单板信息i2c_board_info结构体:名字、设备地址;static struct i2c_board_info i2c_devs3[] __initdata = { { I2C_B...原创 2019-03-28 19:59:10 · 1135 阅读 · 1 评论 -
linux-I2C驱动(2)--linux下的i2c驱动架构
I2c驱动架构:APP层:open、read、write-----------------------------------------------------------------------------------------------驱动层: drv_open、drv_read、drv_write i2c设备驱动 ------------...原创 2019-03-28 18:26:53 · 192 阅读 · 0 评论 -
linux-I2C驱动(1)--i2c的简单介绍
I²C(Inter-Integrated Circuit)“集成电路之间”,是一种串行通信总线,使用多主从架构,由飞利浦公司在1980年代为了主板、嵌入式系统或手机用以连接低速周边设备而发展。接口通过数据引脚(SDA)和时钟引脚(SCL)连接到I2C总线。I2C总线只有两根双向信号线。SDA: Serial Data Line-数据线SCL :Serial Clock-时钟线I2C...原创 2019-03-28 18:09:58 · 246 阅读 · 0 评论 -
linux--物理地址到虚拟地址映射,ioremap()函数
CPU对I/O端口的编制方式设备通常会提供一组寄存器来用于控制设备、读写设备和获取设备状态,即控制寄存器、数据寄存器和状态寄存器。这些寄存器可能位于 I/O 空间,也可能位于内存空间。当位于 I/O 空间时,通常被称为 I/O 端口,位于内存空间时,对应的内存空间被称为 I/O 内存。I/O映射方式:X86处理器为外设实现了单独的地址空间,称IO地址,通过IO指令来访问; 内存映射方式:...原创 2019-03-31 14:05:04 · 9488 阅读 · 0 评论 -
linux中copy_to_user()和copy_from_user()函数
由于内核空间与用户空间的内存不能直接互访,因此借助函数 copy_from_user()完成用户空间到内核空间的复制,函数copy_to_user()完成内核空间到用户空间的复制。copy_from_user()和 copy_to_user()的原型如下所示:unsigned long copy_from_user(void *to, const void __user *fr...原创 2019-03-31 13:49:45 · 8431 阅读 · 0 评论 -
linux内核空间内存动态申请
参考:《linux设备驱动开发详解》华清远见 ,--人民邮电出版社用户空间内存动态申请在用户空间动态申请内存的函数为 malloc(),这个函数在各种操作系统上的使用是一致的,malloc()申请的内存的释放函数为 free()。malloc()的内存一定要被 free(),否则会造成内存泄漏。理想情况下,malloc()和 free()应成对出现,即谁申请,就由谁释放。void *...原创 2019-03-31 13:35:59 · 2019 阅读 · 0 评论 -
linux-GPIO读取以及中断注册
硬件对应HOME→UART_RING→GPX1_1BACK→SIM_DET→GPX1_2SWITCH3→AP_SLEEP→GPC0_3SWITCH4→XEINT6→GPX0_6GPIO读取步骤:申请GPIOgpio_request(EXYNOS4_GPX1(1),"HOME"); 设置模式,输入模式s3c_gpio_cfgpin(EXYNOS4_GPX1(1)...原创 2019-03-30 20:05:15 · 3707 阅读 · 0 评论 -
linux-字符设备驱动--以led为例
linux字符设备驱动字符设备驱动的结构、字符设备驱动与字符设备以及字符设备驱动与用户空间访问该设备的程序之间的关系。申请字符类设备号设备号包括主设备号和此设备号,前面的杂项设备的主次设备号已经固定。ls -l /dev/ 可查询设备号结果:crw-rw---- 1 root 0 10, 51 Mar 30 07:00 alarm...原创 2019-03-30 16:31:29 · 318 阅读 · 0 评论 -
u-boot分析
参考:https://www.cnblogs.com/wrjvszq/p/4217171.htmlhttps://blog.youkuaiyun.com/hyyoxhk/article/details/81734733目录pc与嵌入式系统启动步骤分析u-boot.bin编译过程build_uboot.sh分析Makefile分析mkconfig文件分析链接文件u-boot....原创 2019-03-22 21:29:27 · 555 阅读 · 0 评论 -
linux以module方式注册设备和注册驱动、以及杂项设备
调用 ls /sys/bus/platform/drivers/在虚拟平台总线下查看注册的驱动。调用 ls /sys/devices/platform/在虚拟平台总线下查看注册的设备。最小linux驱动最简Makefile 无配置文件 mini_linux_module.c 头文件 申明模块信息:GPL协议和作者 驱动模块的入口和出口函数 module_init、modu...原创 2019-02-01 01:46:38 · 1677 阅读 · 1 评论 -
exynos4412时钟管理单元(CMU)
exynos4412时钟定义时钟结构体exynos4x12_clockclock_init_exynos4.c -->struct exynos4x12_clock *clk = (struct exynos4x12_clock*)samsung_get_base_clock();定义了一个exynos4x12_clock 结构体指针clk ,指向时钟基地址。samsu...原创 2019-05-05 01:26:39 · 1724 阅读 · 0 评论