十九、更改LCD显示屏
摘要:一、裸机修改 之前测试用的屏幕是480*272的分辨率,现在要换成800*480的屏,因此要对软件代码进行修改。 对于裸机驱动而言,主要有两个点需要注意,一个是屏幕分辨率变了,因此初始化的时候与屏幕分辨率有关的寄存器需要改。但是改了分辨率之后显示出来的图像能明显看到闪烁,这是因为软件设置LCD的时钟
阅读全文
十八、优化按键驱动
摘要:之前写的按键驱动中发现一个不足之处,还有一个bug,先附上代码 key.c key_app.c 在调用read函数读取按键的值时应该有阻塞和非阻塞两种方式,用open("/dev/mykey", O_RDWR);方式打开默认是阻塞的方式,如果要用非阻塞的方式打开则可以用open("/dev/myke
阅读全文
十七、完成调整时间的功能
摘要:先上代码,最后讲解。 draw.c draw.h font_size_48.c 注:编译时除了48号字体外还有16,24,32,64等字体,但是我使用的是48号字体 main.c Makefile figure.c figure.h 在使用时要先将用 insmod key.ko将第十二章编写好的按键
阅读全文
十六、在屏幕上显示时间
摘要:上一章中已经实现了在屏幕上显示字符,要在屏幕上显示时间只需要修改主函数即可,主函数修改如下: 附上显示效果图:
阅读全文
十五、在屏幕上显示字符
摘要:显示字符需要先实现绘点功能,然后用取模工具对需要显示的字符取模,我用的取模工具为PCtoLCD2002,设置如下图: 封装的函数最好比较容易使用,最好能选择字体,具体细节再此不详述,直接附上程序。 draw.c draw.h font_size_16.c font_size_24.c font_si
阅读全文
十四、使用framebuffer填充纯色
摘要:简单描述一下framebuffer的使用,它其实就相当于将屏幕上的像素映射到内存中,改变内存中的内容后屏幕自动就变颜色了。 首先要调用open("/dev/fb0", O_RDWR);打开帧缓冲设备文件,获得文件描述符,然后使用mmap将文件内容映射到内存中,具体映大小取决于屏幕大小,初始化程序如下
阅读全文
十三、优化按键驱动(用延迟作业消抖)
摘要:将key.c修改为: 第52行的延时时间与按键质量有关系,按键抖动厉害的话就适当增加时间。
阅读全文
十二、编写按键混杂设备驱动(中断,等待队列)
摘要:key.c key_app.c 这样调用read的时候回阻塞,直到中断发生
阅读全文
十一、编写按键混杂设备驱动(轮询)
摘要:1. 确定硬件连接 主要电路连接如下: 从电路图中可以发现开发板上6个按键连接到了GPN0~5,当按键弹起时IO状态应为高电平,当按键按下时IO口状态为低电平。 2. 确定寄存器 下图为寄存器的名称和地址: 下图为配置寄存器的描述: 下图为数据寄存器和上/下拉寄存器: 需要注意的是,GPN默认是下拉
阅读全文
十、编写LED混杂设备驱动
摘要:led.c修改为: 其他文件同上一章一样,但是使用led时只需要先insmod led.ko,不需要再创建设备节点便可以使用led_app控制led
阅读全文
九、编写led驱动
摘要:led.c 1 #include <linux/init.h> 2 #include <linux/module.h> 3 #include <linux/cdev.h> 4 #include <linux/fs.h> 5 #include <linux/io.h> 6 7 #define GPMC
阅读全文
八、启动linux内核并修改开机logo
摘要:1. 编译并烧写linux内核 1)先准备好内核源码包urbetter-linux2.6.28-v1.0.tgz,输入命令:tar -zxvf urbetter-linux2.6.28-v1.0.tgz 解压 2)进入内核源码包目录,修改Makefile,将CROSS_COMPILE改为自己的交叉编
阅读全文
七、在U-boot中让LCD显示图片
摘要:1. 增加Nandflash读取代码 因为要显示图片,而图片明显是放在Nandflash中比较合适,因此需要有能够操作Nandflash的函数。在U-boot中已经有能操作Nandflash的函数了,但是我找了半天也不知道该怎么调用,因此还是上自己的代码吧。 注意第101行我把__nand_init
阅读全文
六、在U-boot中让LCD填充纯色
摘要:1. 编译U-boot 准备好U-boot压缩包urbetter-u-boot-1.1.6-v1.0.tgz,输入命令:tar -xvf urbetter-u-boot-1.1.6-v1.0.tgz 进入U-boot目录,按顺序执行以下命令: make clean make smdk6410_con
阅读全文
五、LCD屏填充纯色
摘要:废话不说,直接上代码: lcd.c lcd.h main.c start.s Makefile
阅读全文
四、使用汇编编写LED裸机驱动
摘要:1. 确定硬件连接 打开OK6410底板电路图,找到LED,可以发现NLEDx为0时LED点亮。 找到LED的控制引脚,发现LED控制引脚通过连接器连到了核心板: 打开核心板电路图,找到对应的连接器中相同位置下的引脚,发现核心板上的命名与底板相同。 注意:设计者为了方便会将核心板与底板连接处的端口命
阅读全文
三、安装交叉编译工具
摘要:1. 解压文件 准备好交叉编译工具arm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar.bz2,输入命令:tar -xjvf arm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar.bz2 -C . 注意命
阅读全文
二、先在SD卡上启动U-boot,再烧写新的U-boot进Nandflash
摘要:1. 制作SD卡 先准备一张2G的SD卡(不能用8G的,2G的卡和8G的卡协议不一样),和烧写SD卡的工具write_sd以及需要烧写到SD卡中的u-boot-movi.bin。将SD卡格式化后连接到Ubuntu虚拟机中,注意在SD卡需要插入到读卡器中,不能用电脑自带的SD卡槽,否则在Ubuntu下
阅读全文
一、前言
摘要:最近接手了一项工作,内容主要有两点: 吐槽: 本人工作经验只有一年,之前开发过其他平台的裸机代码,但是没有摸过6410,也没有linux驱动开发经验,以下内容大部分都是现学现卖,有不足之处还请指出。之所以写这篇博客是因为本人的垃圾神州Z7M-KP7ZC笔记本电脑上次休眠后发现无论怎样都唤醒不了了,然
阅读全文