- 博客(37)
- 收藏
- 关注
转载 十九、更改LCD显示屏
一、裸机修改 之前测试用的屏幕是480*272的分辨率,现在要换成800*480的屏,因此要对软件代码进行修改。 对于裸机驱动而言,主要有两个点需要注意,一个是屏幕分辨率变了,因此初始化的时候与屏幕分辨率有关的寄存器需要改。但是改了分辨率之后显示出来的图像能明显看到闪烁,这是因为软件设置LCD的时钟来自HCLK,HCLK的频率是133MHz,在软件中又设置了VIDCON0寄存...
2019-09-02 16:20:00
990
转载 linux在终端中按下键盘立马反应
想在终端中做个小应用,按下上下左右键能立刻作出反应。测试程序见下: 1 #include <stdio.h> 2 #include <unistd.h> 3 #include <termios.h> 4 5 int main(int argc, const char *argv[]) 6 { 7 struc...
2019-05-06 11:38:00
439
转载 USB2514集线器调试总结
一般的MCU不会留有太多的USB口,但在实际项目中又会遇到需要很多个USB口的情况,这时就会用到USB集线器来扩展USB口了。USB2514这个芯片是我在工作中用的比较多的,但是问题很多,从来没有调稳定过,前几天抽空把这个芯片调了一下,终于调稳定了。现在就把我调试过程写下来。首先在网上抄了一个电路,原理如下:图中所有的红色标号全部用导线引出,下游的USB端口接了4个US...
2019-05-05 15:37:00
4085
转载 十八、优化按键驱动
之前写的按键驱动中发现一个不足之处,还有一个bug,先附上代码key.c 1 #include <linux/init.h> 2 #include <linux/module.h> 3 #include <linux/miscdevice.h> 4 #include <linux/fs.h> 5 #in...
2019-02-22 11:57:00
211
转载 DB9接口定义
注意上表是公头的引脚定义,公头与母头的引脚编号是轴对称的,因此将公头和母头连接时是相同序号的引脚相连接。作为串口使用时要注意,公头的2号是RXD,因而母头的2号是TXD,公头的3号是TXD,因而母头的3号是RXD。转载于:https://www.cnblogs.com/Suzkfly/p/10400841.html...
2019-02-19 14:24:00
3222
转载 十七、完成调整时间的功能
先上代码,最后讲解。draw.c 1 #include <stdio.h> 2 #include <linux/fb.h> 3 #include <sys/types.h> 4 #include <sys/stat.h> 5 #include <fcntl.h> 6 #include ...
2019-02-18 22:38:00
285
转载 十六、在屏幕上显示时间
上一章中已经实现了在屏幕上显示字符,要在屏幕上显示时间只需要修改主函数即可,主函数修改如下: 1 #include <stdio.h> 2 #include <time.h> 3 #include "draw.h" 4 5 int main(int argc, const char *argv[]) 6 { 7 int i...
2019-02-15 15:07:00
632
转载 十四、使用framebuffer填充纯色
简单描述一下framebuffer的使用,它其实就相当于将屏幕上的像素映射到内存中,改变内存中的内容后屏幕自动就变颜色了。 首先要调用open("/dev/fb0", O_RDWR);打开帧缓冲设备文件,获得文件描述符,然后使用mmap将文件内容映射到内存中,具体映大小取决于屏幕大小,初始化程序如下: 1 typedef unsigned short color_t; ...
2019-02-14 11:25:00
1046
转载 linux实时时钟相关函数
time功能:获取1970年1月1日00:00:00到现在的秒数原型:time_t time(time_t *t);参数: t:获取到的秒数返回:获取到的秒数说明:在time.h中定义了time_t类型就是long类型。通过形参或返回值获取到的值是一样的。localtime功能:将1970年1月1日00:00:00到现在的秒数转换为当地日历时间原型:...
2019-02-13 16:45:00
277
转载 六、流的定位
fseek功能:设置游标的位置原型:int fseek(FILE *stream, long offset, int whence);参数: stream:流指针 offset:偏移量,>0则向后便宜,<0则向左偏移 whence: SEEK_SET:流的开头 SEEK_CUR:当前位置 SEEK_END:流的末尾...
2019-02-13 12:16:00
171
转载 五、stdout,stdoin和stderr
stdout,stdin和stderr分别是标准输出流、标准输入流和标准错误流,当一个用户进程被创建的时候,系统会自动为该进程创建这三个数据流,默认情况下这三个流是在终端上表现出来的。可以使用fprintf函数将数据打印到流中,如调用函数fprintf(stdout, "hello world\n");或者fprintf(stderr, "hello world\n");则会在终端中显示...
2019-02-13 10:39:00
397
转载 四、fgets与fputs
fgets描述:从流中读取最多size个字符,遇到文件末尾或\n则停止读取,该函数会在读取到的字符最后加上\0。原型:char *fgets(char *s, int size, FILE *stream);参数: s:保存数据的地址 size:要获取的字符个数 stream:文件流指针返回:成功返回s(保存数据的地址),失败返回NULL。注意:停止...
2019-02-12 20:28:00
234
转载 三、fgetc与fputc
fgetc功能:从流中读取一个字符原型:int fgetc(FILE *stream);参数: stream:要读取的流指针返回:读取到的字符,如果读完则返回EOF,EOF是end of file的缩写,其值是-1。注意:返回的数据类型是int型,但是可以用char型变量接收fputc功能:向流中写入一个字符原型:int fputc(int c, F...
2019-02-12 19:29:00
256
转载 二、fread与fwrite
fread原型:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);参数: ptr:数据存放地址 size:一个对象的大小 nmemb:对象个数 stream:文件流指针返回:成功读取的对象个数说明:需要读取的字节个数为size和nmemb的乘积,返回实际读取到的完整对象...
2019-02-12 17:10:00
116
转载 一、fopen与fclose
需要包含的头文件为stdio.hfopen原型:FILE *fopen(const char *path, const char *mode);返回:打开成功则返回文件流指针,失败则返回空参数: path:要打开的文件 mode:打开模式,大概有6种组合,man手册是这样写的:大概解释一下: r:用只读方式打开文件,流指针定位在文件开头 r...
2019-02-12 16:19:00
688
转载 可变参函数
最常见的可变参函数就是printf了,它的函数原型为int printf(const char *format, ...); 可变参函数至少要有一个确定的参数,后面的...表明该函数第一个参数之后还可以输入若干个参数。 为解析可变参数,C语言提供了一个va_list类型和,并在stdarg.h中声明了四个函数,分别是va_start,va_arg,va_e...
2019-01-30 00:13:00
259
转载 文本编辑器vim
命令行模式yy:复制当前光标所在的行[n]yy:复制当前光标开始的n行p:粘贴复制内容到光标所在的行dd:剪切光标所在的行[n]dd:剪切光标开始的n行G:光标移动到文件末尾:0或 :1:光标移动到文件开始u:取消前一个动作i:进入插入模式底行模式w:保存q:退出(未修改过文件内容时用)q!:退出不保存(修改过文件内容时用)wq:保...
2019-01-29 17:32:00
108
转载 进程管理
1. 查看进程 ps [参数] 例:ps aux2. 杀死进程 kill [参数] +进程ID 例:kill -9 7295 表示以第9种方法杀死ID为7295的进程3. 查看内存 free [参数]4. CPU占有率 top [参数]转载于:https://www.cnblogs.com/Suzkfly/p/10334921.h...
2019-01-29 17:16:00
106
转载 查找命令
1. 查找文件find 路径 -name 文件名例:find /root -name hello.c表示从/root目录下查找名为hello.c的文件(自动递归)2. 从文件中查找字符串grep "字符串” 路径 参数例:grep "hello" . -r表示从当前路径下寻找含有字符串“hello”的文件转载于:https://www.cnblogs.co...
2019-01-29 17:06:00
118
转载 linux中ls -l介绍
[root@localhost ~]# ls -l总计 152-rw-r--r-- 1 root root 2915 08-03 06:16 a-rw------- 1 root root 1086 07-29 18:35 anaconda-ks.cfg…………………………………………第1行:总计(total)Total后面的数字是指当前目录下所有文件所占用的空间...
2019-01-29 16:56:00
207
转载 十三、优化按键驱动(用延迟作业消抖)
将key.c修改为: 1 #include <linux/init.h> 2 #include <linux/module.h> 3 #include <linux/miscdevice.h> 4 #include <linux/fs.h> 5 #include <linux/interrupt.h&...
2019-01-29 16:26:00
287
转载 十二、编写按键混杂设备驱动(中断,等待队列)
key.c 1 #include <linux/init.h> 2 #include <linux/module.h> 3 #include <linux/miscdevice.h> 4 #include <linux/fs.h> 5 #include <linux/interrupt.h>...
2019-01-29 16:20:00
140
转载 linux内核工作队列使用总结
我总结出的内核工作队列中的4种用法1. 使用系统的工作队列(不延迟) 1)定义一个工作:struct work_struct my_work; 2)编写一个函数:void my_work_func (struct work_struct *p_work){ printk("work func\n");} 3)将工作和函数...
2019-01-29 15:52:00
306
转载 十一、编写按键混杂设备驱动(轮询)
1. 确定硬件连接 主要电路连接如下: 从电路图中可以发现开发板上6个按键连接到了GPN0~5,当按键弹起时IO状态应为高电平,当按键按下时IO口状态为低电平。2. 确定寄存器 下图为寄存器的名称和地址: 下图为配置寄存器的描述: 下图为数据寄存器和上/下拉寄存器: 需要注意的是,GPN默认是下拉使能,从电路图中判断按键...
2019-01-25 02:50:00
179
转载 十、编写LED混杂设备驱动
led.c修改为: 1 #include <linux/init.h> 2 #include <linux/module.h> 3 #include <linux/miscdevice.h> 4 #include <linux/fs.h> 5 #include <linux/io.h> 6 7 ...
2019-01-25 00:37:00
244
转载 九、编写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 GP...
2019-01-24 23:29:00
278
转载 八、启动linux内核并修改开机logo
1. 编译并烧写linux内核 1)先准备好内核源码包urbetter-linux2.6.28-v1.0.tgz,输入命令:tar -zxvfurbetter-linux2.6.28-v1.0.tgz 解压 2)进入内核源码包目录,修改Makefile,将CROSS_COMPILE改为自己的交叉编译工具。 3)执行命令:make 之后会在arch/arm/boo...
2019-01-24 16:05:00
723
转载 七、在U-boot中让LCD显示图片
1. 增加Nandflash读取代码 因为要显示图片,而图片明显是放在Nandflash中比较合适,因此需要有能够操作Nandflash的函数。在U-boot中已经有能操作Nandflash的函数了,但是我找了半天也不知道该怎么调用,因此还是上自己的代码吧。 1 #define NFCONF *(volatile unsigned int *)0x70200000 ...
2019-01-24 02:52:00
406
转载 六、在U-boot中让LCD填充纯色
1. 编译U-boot 准备好U-boot压缩包urbetter-u-boot-1.1.6-v1.0.tgz,输入命令:tar -xvfurbetter-u-boot-1.1.6-v1.0.tgz 进入U-boot目录,按顺序执行以下命令: make clean make smdk6410_config make 会报出很多/usr/local/ar...
2019-01-24 01:35:00
320
转载 五、LCD屏填充纯色
废话不说,直接上代码: lcd.c 1 #include "lcd.h" 2 3 static int PEN_COLOR = LCD_RED; /* 定义画笔(前景)颜色 */ 4 static int BK_COLOR = LCD_BLACK; /* 定义背景颜色 */ 5 6 /** 7 * \brief LCD初始化...
2019-01-23 23:30:00
1432
转载 四、使用汇编编写LED裸机驱动
1. 确定硬件连接 打开OK6410底板电路图,找到LED,可以发现NLEDx为0时LED点亮。 找到LED的控制引脚,发现LED控制引脚通过连接器连到了核心板: 打开核心板电路图,找到对应的连接器中相同位置下的引脚,发现核心板上的命名与底板相同。 注意:设计者为了方便会将核心板与底板连接处的端口命名为相同的名字,但判断两者的连接位置与端口名其实是没...
2019-01-23 17:28:00
215
转载 三、安装交叉编译工具
1. 解压文件 准备好交叉编译工具arm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar.bz2,输入命令:tar -xjvfarm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar.bz2 -C . 注意命令最后有个“点”,-C . 指的是将文件解压到当前目录,解压后发现在当前目录下...
2019-01-23 15:54:00
233
转载 二、先在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下认不到。先执行ls /dev/sdb*,能够看见有一个/dev/sdb文件,说明Ub...
2019-01-22 23:39:00
554
转载 一、前言
最近接手了一项工作,内容主要有两点:在6410的板子上运行linux,在linux启动之后显示一个校时界面,界面上显示当前时间,通过按键(中断)进行校时。U-boot启动之前显示一副图像,linux启动之前显示另一幅图像。吐槽: 本人工作经验只有一年,之前开发过其他平台的裸机代码,但是没有摸过6410,也没有linux驱动开发经验,以下内容大...
2019-01-22 11:01:00
95
转载 Ubuntu配置静态IP
1. 输入命令:sudo vi /etc/network/interfaces 编辑文件:1 auto lo2 iface lo inet loopback3 4 auto eth05 iface eth0 inet static6 address 192.168.1.2007 netmask 255.255.255.08 gatewayip 192....
2019-01-22 09:34:00
73
转载 linux执行可执行文件时报xxx:not found
实际上是因为可执行文件执行时所依赖的动态链接库找不到,解决方法为在编译时加-static表示使用静态链接。 或者使用arm-linux-readelf -d +可执行文件,查看该可执行文件依赖的动态链接库。 /lib文件下为动态链接库,除了编译时加-static外也可以将缺失的库拷贝到该目录下。转载于:https://www.cnblogs.com/Suzkfly/p...
2019-01-07 15:24:00
1685
转载 在6410开发板上点灯的学习过程
最近公司接手了一个大型汇编工程,我也不知道这个年代为什么还有人会耗费精力去编写十几万行的汇编代码,而且这套代码即将由我来接手,想想就头大。 我本人接触linux的时间并不长,很多东西只是摸过,不能说出个所以然来。 借着这个机会学习一下,高手勿笑。 我的第一个目标就是利用汇编程序在6410开发板上点亮LED。 查看原理图,找到连接开发板上的4个LED分...
2018-11-20 22:15:00
215
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人