- 博客(26)
- 资源 (52)
- 收藏
- 关注
原创 USB驱动程序移植
USB驱动程序分为两类:USB主机控制器驱动程序(Host Controller Drivers)、USB设备驱动程序(USB device drivers)。它们在内核中的层次为: USB主机控制器驱动程序 提供访问USB设备的接口,它只是一个“数据通道”,至于这些数据有什么作用,这要靠上层的USB设备驱动程序来解释。 USB设备驱动程序 使用下层驱动提供
2016-06-10 22:36:48 735
原创 韦东山 文件系统映像,mount挂接文件系统
cd /work/nfs_rootmkdir tmpcp fs_mini_mdev.tar.bz2 tmp/cd tmp/tar xjf fs_mini_mdev.tar.bz2 把光盘上linux/tools里的mkyaffs2image工具拷到服务器的/work/tools目录里。cd /work/toolscp mkyaffs2image /bin/chmod
2016-06-10 18:53:49 1264
原创 LCD驱动程序移植
对LCD的操作可以像串口一样,通过终端设备层的封装(/dev/tty*设备)来输出内容,也可以通过frame buffer(/dev/fb*设备)直接在显存上“绘制”图像。tty(终端设备)和frame buffer驱动程序的框架:下面根据每层的文件讲解一下上图:1)显示驱动程序2)键盘驱动程序2.操作实例1)对/dev/tty*调用
2016-06-10 14:38:04 1755
原创 SD卡驱动程序移植
1.内核MMC/SD驱动程序框架内核drivers/mmc目录下有3个子目录:card/、core/和host/,这刚好表示了MMC/SD驱动程序的3个层次,如下:1)区块层 向文件系统层、用户空间提供文件操作的接口,主要文件是card/目录下的block.c,queue.c向它提供了几个函数来操作队列。 区块层调用core/目录下的core.c、sysfs.c提供
2016-06-10 08:56:30 849
原创 IDE接口驱动程序移植
从上图可知:中断引脚为EINT6,上升沿有效;使用nWAIT信号;数据位宽为16。如前所述,移植驱动,只需要把上面的地址、中断号告诉内核就可以了。只需要修改两个文件,drivers/ide/arm/ide_arm.c、drivers/ide/Kconfig。在drivers/ide/arm/ide_arm.c文件中增加ide_s3c24xx_init函数,修改后文件如下(使用编译开关C
2016-06-09 14:10:35 752
原创 如何判断外设使用的地址空间
S3C2410/S3C2440的存储控制器有如下特性:1.每个BANK的地址空间为128MB,总共1GB(8 BANKs);2.可编程控制总线位宽(8/16/32-bit),不过BANK0只能选择两种位宽(16/32-bit);3.总共8个BANK,BANK0~BANK5可以支持外接ROM、SRAM等,BANK6~BANK7除可以支持ROM、SRAM外,还支持SDRAM等。4.BA
2016-06-09 10:38:46 2067
原创 建立网络文件系统
在openJTAG下执行:set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.19:/work/nfs_root/tmp/fs_mini_mdev ip=192.168.1.17:192.168.1.19:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
2016-06-09 00:49:14 270
原创 tftp下载内核和文件系统
按q进入openJTAG模式,执行menu命令回到原目录。tftp下载内核:1.打开tftp软件,把当前目录设置为要下载文件所在的目录;服务器ip设好,为Windows的ip。2.在openJTAG命令行里执行print命令看参数。 执行set ipaddr 192.168.1.17,把开发板的ip设为192.168.1.17 执行set serverip 192.
2016-06-09 00:47:45 2660
原创 移植Busybox
1.由前面内核启动流程可知,内核启动的最后一步就是启动init进程,代码在init/main.c中,如下: (1)打开标准输入、标准输出、标准错误设备。第756行尝试打开/dev/console设备文件,如果成功,它就是init进程标准输入设备。第759、760将文件描述符0复制给文件描述符1、2,所以标准输入、标准输出、标准错误都对应一个文件。Busybox
2016-06-07 17:23:37 453
原创 Linux内核移植
以下内容大部分来自《嵌入式Linux应用开发完全手册》1.1内核启动过程概述 如图是Linux内核的vmlinux启动过程。之所以强调是vmlinux,是因为其他格式的内核在进行与vmlinux相同的流程之前会有一些独特的操作。比如压缩格式的内核zImage,它首先进行自解压得到vmlinux,然后执行vmlinux,开始“正常的”启动流程。 第一阶段:引导
2016-06-06 20:02:10 531
原创 U-Boot常用命令
图片内容来自《嵌入式Linux应用开发完全手册》1.帮助命令help2.下载命令使用方法举例:0x30000000表示文件下载后存放的内存地址;3.内存操作命令4.NOR Flash操作命令5.NAND Flash操作命令eg:nand erase 0xA00000 0x
2016-06-05 15:37:16 526
原创 Linux内核Makefile
顶层Makefile根据不同的平台,对各类target分类并调用相应的规则Makefile生成目标.config内核配置文件arch/$(ARCH)/Makefile具体平台相关的Makefilescripts/Makefile.*通用规则文件,面向所有的Kbuild Makefiles,所
2016-06-05 10:52:55 2457
转载 Linux内核源码结构
引用点击打开链接Linux内核文件数目将近2万,除去其他架构CPU的相关文件,支持S3C2410、S3C2440这两款芯片的完整内核文件有1万多个。这些文件的组织结构并不复杂,它们分别位于顶层目录下的17个子目录,各个目录功能独立。arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录,如i386、arm、arm64、powerpc、mips等。Linux内核目前已经支持
2016-06-04 19:29:56 512
原创 SecureCRT的使用
1.如何在同一个窗口开多个标签?新建连接时,把红圈里的选项勾上就行了。2.SecureCRT的快捷键Alt + Enter -- 全屏 Alt + B --打开新的连接 Alt + 1/2/3/4/5.../9 -- 切换到第1/2/3/4/5.../9个标签 Ctrl + A -- 光标移至行首。 Ctrl + B -- 光标前移1个字符
2016-06-02 21:04:12 564
转载 关于main函数的(int argc,char *argv[])
main(int argc,char *argv[ ])argv为指针的指针argc为整数char **argv or: char *argv[] or: char argv[][]main()括号内是固定的写法。下面给出一个例子来理解这两个参数的用法:假设程序的名称为prog,当只输入prog,则由操作系统传来的参数为:argc=1,表示只有一程序名称。arg
2016-06-02 17:23:42 618
原创 嵌入式驱动之阻塞操作、非阻塞操作
阻塞阻塞操作 是指在执行设备操作时若不能获得资源则挂起进程,直到满足可操作的条件后再进行操作。被挂起的进程进入休眠状态,被从调度器的运行队列移走,直到等待的条件被满足。非阻塞操作 进程在不能进行设备操作时并不挂起,它或者放弃,或者不停地查询,直至可以进行操作为止。fd = open("...", O_RDWR | O_NONBLOCK); 比
2016-06-02 16:55:28 1600
原创 嵌入式驱动程序之信号量
如果要实现驱动程序,在同一时间只能被一个应用程序打开。也可以用信号量。信号量信号量(semaphore)是用于保护临界区的一种常用方法,只有得到信号量的进程才能执行临界区代码。当获取不到信号量时,进程进入休眠等待状态。定义信号量struct semaphore sem;初始化信号量void sema_init (struct semaphore *sem,
2016-06-02 16:03:17 738
转载 ps命令
原文地址为:Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有
2016-06-02 15:09:40 313
原创 驱动程序之原子操作
如果要实现驱动程序,在同一时间只能被一个应用程序打开。方法之一,可以用原子操作。原子操作原子操作指的是在执行过程中不会被别的代码路径所中断的操作。常用原子操作函数举例:atomic_t v = ATOMIC_INIT(0); //定义原子变量v并初始化为0atomic_read(atomic_t *v); //返回原子变量的值void atom
2016-06-02 14:40:29 820
原创 字符设备驱动程序之异步通知
如果要实现:平时应用程序处于休眠状态,当按下按键时,驱动告诉应用程序由状态改变,需要读取按键状态了。那么就需要建立驱动和应用程序之间的通信。应用函数中的某个函数怎么使用,需要包含哪些头文件,可以在服务器端查询,如:man signal;man getpid;man fcntl;驱动程序代码:#include #include #include #include #inc
2016-06-02 13:51:01 403
原创 字符设备驱动程序之poll机制
poll机制分析韦东山 2009.12.10所有的系统调用,基于都可以在它的名字前加上“sys_”前缀,这就是它在内核中对应的函数。比如系统调用open、read、write、poll,与之对应的内核函数为:sys_open、sys_read、sys_write、sys_poll。 一、内核框架:对于系统调用poll或select,它们对应的内核函数都是sys_poll。分析s
2016-06-02 01:18:08 1061
原创 中断按键驱动程序
#include #include #include #include #include #include #include #include #include #include #include static struct class *thirddrv_class;static struct class_device *thirddrv_class_dev;volatile unsigne
2016-06-01 22:17:49 580
原创 查询方式的按键驱动程序
#include #include #include #include #include #include #include #include #include #include static struct class *seconddrv_class;static struct class_device *seconddrv_class_dev;volatile un
2016-06-01 09:08:36 527
原创 嵌入式LED驱动程序(韦东山板子)
#include #include #include #include #include #include #include #include #include #include static struct class *firstdrv_class;static struct class_device *firstdrv_class_dev;volatile unsi
2016-06-01 00:03:34 2002
6mm透明亚克力.dwg
2019-12-09
GNSS坐标转换小工具和代码.zip
2021-06-05
红外热成像测温论文资料
2021-01-03
Nuvoton_8051_Keil_uVision_Driver_v2.00.6561.zip
2020-09-26
GRBL_Control.rar
2020-05-29
VL53L0X.rar
2020-05-20
Obsidian2.xml
2020-01-22
STM32H753xx_User_Manual.chm
2019-12-03
SPWM_simulink.slx
2019-08-13
svpwm_simulink.slx
2019-08-10
GT911、GT928、GT9147的驱动程序
2019-07-01
CMSIS.rar,解决缺少core_cmFunc.h和core_cmInstr.h
2019-06-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人