- 博客(16)
- 收藏
- 关注
原创 二叉树的创建和遍历
先按先序的顺序输入节点,空的节点以 # 代替,然后以先序遍历,中序遍历,后序遍历,层次遍历的顺序输出。其中层次遍历中,采用队列的方式缓存节点,如果队列已满则中断遍历,此时输出的结果会不完整,队列大小根据宏 LEN_QUEUE确定。/****************************************************************************
2015-09-13 19:27:16
567
原创 解决 驱动创建设备节点时 权限为 root只读只写 的问题
上一篇做字符设备驱动时,创建的设备节点/dev/mycdev 为root用户root组,且权限为0600,这就导致一般的应用程序无法访问上网查询得知可通过udev自创规则来实现:创建设备节点时设置权限。详情参考:http://blog.chinaunix.net/uid-23670869-id-2391638.html。zhou@zhoupc:~$ cd /etc/udev/rul
2015-09-10 21:03:15
9313
原创 简单字符设备驱动流程
1.linux系统将设备分为3类:字符设备、块设备、网络设备。使用驱动程序:其中,字符设备是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据。字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制台和LED设备等。2.字符设备驱动模型3.我写的是一个简单的字符设备驱动示例,驱动操作的是一个虚拟的设备,读写的数据都在
2015-09-10 18:36:35
4091
原创 实现aoti() 函数
看到一到题目,要自己实现atoi()函数,标准库里的atoi 是这样要求的:参数nptr字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。否则,返回零。而且还得考虑溢出的问题。我自己尝试了一下,跟网上大神的对比,逻辑不够清晰,估计只能自己看得懂。大神用的是C++,除了输入输出函数C不同外,其余代
2015-09-09 20:53:41
2849
原创 int const *a, const int *a,const int *const a的测试
1.const int a 和 int const a 等价,没有int a const这种写法。2.const int *a 和int const *a 等价,指向的值不能通过*a改变,但是a指针本身能变。代码: int b = 2; //int const *a = &b; const int *a = &b; int c = 3;
2015-09-08 11:11:48
682
原创 S3C2440 GPS串口配置以及数据读写
S3C2440 GPS串口配置以及数据读写参考文章:http://www.cnblogs.com/jason-lu/articles/3173988.html http://www.cnblogs.com/chengmin/p/3818133.html gps模块用串口线与S3C2440的ttyS1串口连接串口操作需要的头文件
2015-09-07 20:36:11
1297
转载 dup和dup2函数的不同和使用
文章原地址:http://www.01happy.com/c-dup-dup2/在unix高级编程中有介绍dup和dup2,但是没有实例说明, 笔者自己结合实例进行了测试了解。在linux下,通过open打开以文件后,会返回一个文件描述符,文件描述符会指向一个文件表,文件表中的节点指针会指向节点表。看下图:打开文件的内核数据结构dup
2015-08-06 16:40:09
472
转载 wait waitpid
wait 1.1 简介wait函数所需头文件: #include #include wait函数原型:pid_t wait(int *status);进程一旦调用了 wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait就会收集这个子 进程的信息,并把它彻底销毁后返回;如果没有找到这
2015-08-05 17:40:52
536
原创 Git管理本地代码
Ubuntu下git的安装和使用系统:Ubuntu 15.05玩开发板的时候要修改很多代码,有增添的有删除的有原基础小修改的,有时还要写一些测试程序,有时甚至要整个项目分好几个版本。原本,我在修改代码的时候采取的是注释的形式,写明这行是我添加的,这部分是我注释的。当项目是线性的时候这种方法当然很好,但是我想在此基础上有没有更完善的管理代码的方式?比如,我对linux3.0移植了A功能和
2015-08-05 11:28:14
3580
原创 S3C2440 U盘,以及自动挂载顺序(inittab,fstab,mdev,hotplug)
平台: Ubuntu 14.04 LTS Linux-3.0 首先配置内核参数:Make menuconfigDevice Drivers ---> SCSI device support ---> SCSIdevice support [*] legacy/pr
2015-08-04 16:28:01
1772
原创 S3C2440 framebuffer编程
我们的目标是在LCD上画出简单的图形,而framebuffer就是我们与LCD打交道的一个工具。网上有一段话解释得很详细: Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux抽象出FrameBuffer这个设备来供用户态进程实现直接写屏。Framebuffer机制模仿显卡的功能,将显卡硬件结构抽象掉,可以通过
2015-07-31 19:34:31
761
原创 S3C2440 LCD framebuffer 显示图像
先直接给出程序,过两天再写有关framebuffer的内容,主要怕忘了:代码参考了网上的画图代码,因为画斜线不是那么好画的:#include #include #include #include #include #include #include #include #include #define XRES 480char *fb_addr;unsigned i
2015-07-28 13:22:22
2015
原创 S3C2440 移植RT3070AP
AP是当发射器的。STA是当接收器的。下面是简单的AP,无密码,无DHCP,无实用意义,好玩而已。下载AP的驱动包。链接: http://pan.baidu.com/s/1fRJLO 密码: nx6kvim MODULE/Makefile #PLATFORM: Target platform#PLATFORM = PC#PLATFORM = 5VT#PL
2015-07-27 20:47:55
634
原创 S3C2440 解决LCD图像偏移问题
我一直以为我的LCD已经移植好了,但是在做frame buffer编程的时候却发现显示的图像不对,一开始我怀疑的是测试程序的问题,但是仔细看了几遍觉得不可能错,因为测试程序很简单,就是让屏幕全白,但是板子上显示的是两块白色区域,中间被一条黑色带隔开了。我猜测可能是LCD没有移植正确。 我查了很多网上的参数,每个人各有不同,我还看了同学和老师的,也是各有不同。于是我一一试了一遍,结
2015-07-27 20:25:40
2461
原创 S3C2440移植RT3070STA
硬件:飞凌嵌入式S3C2440,RT3070软件:VM虚拟机中的Ubuntu 14.04 LTS Linux-3.0 RT3070.tar.bz2 (驱动) wireless_tools.29.tar.gz wpa_supplicant-0.6.10.tar.gz 首先配置内核: [*] Networki
2015-07-19 18:02:36
1113
转载 linux中_IO宏的用法
在做fl2440的led驱动时,看到老师的代码中涉及_IO宏的使用,很不理解,上网找到这篇文章转来备用:在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值。cmd除了可区别数字外,还包含有助于处理的几种相应信息。 cmd的大小为 32位,共分 4 个域:bit31~bit30 2位为 “区别读写” 区,作用是区分是读取命令还是写入命
2015-03-31 19:10:35
1203
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人