学习笔记及疑问
山影水痕
嵌入式开发爱好者
展开
-
带缓存的IO和不带缓存的IO
首先,先稍微了解系统调用的概念: 系统调用,英文名system call,每个操作系统都在内核里有一些内建的函数库,这些函数可以用来完成一些系统系统调用把应用程序的请求传给内核,调用相应的的内核函数完成所需的处理,将处理结果返回给应用程序,如果没有系统调用和内 核函数,用户将不能编写大型应用程序,及别的功能,这些函数集合起来就叫做程序接口或应用编程接口(Application Pr转载 2013-03-21 20:48:48 · 772 阅读 · 1 评论 -
nfs的使用
服务端安装:vim /etc/exports设置:(以此为例) /home 172.21.58.237(rw,sync,no_root_squash)开启服务:/etc/init.d/portmap start /etc/init.d/nfs restart(没re总是不能打开deamon,,,)客户端!!!挂载:moun原创 2013-04-16 21:29:34 · 476 阅读 · 0 评论 -
第一个驱动测试程序的调试和疑问
下面一段代码是为设备申请设备号。当mem_major非0时静态申请,=0时动态分配。 dev_t devno = MKDEV(mem_major, 0); /* 静态申请设备号*/ if (mem_major) result = register_chrdev_region(devno, 2, "memdev"); else /* 如果主设备号为0,动原创 2013-04-18 11:34:03 · 517 阅读 · 0 评论 -
制作交叉工具链时对文件etc_profile的更改
原来没有27-29行。然后执行source /etc/profile使其生效补充:因为编译出错,百度是编译器版本低的原因,今天相应的方式将其更改为arm-linux-4.4.3 (友善提供的),,,,,,,,,,,,,,,,,,,,,,,,,,,,,使用该工具链还是出现很多错误,又安装了天嵌提供的EABI-4.3.3,至此,第一个驱动测试程序的编译,加载和测试功能基本原创 2013-04-14 16:34:00 · 567 阅读 · 0 评论 -
samba服务windows向Linux传入文件速度慢的问题
修改 /etc/samba/smb.conf,加入[global]read size = 512 socket options = TCP_NODELAY SO_KEEPALIVE SO_RCVBUF=512 SO_SNDBUF=512 IPTOS_LOWDELAY getwd cache = yesfollow symlinks = no wid原创 2013-04-24 10:46:54 · 14204 阅读 · 0 评论 -
对vim的配置
2013-04-24补充:将.vimrc文件仅按如下配置set fileencodings=utf-8,gb2312,gbk,gb18030set termencoding=utf-8 set fileformats=unix (add:,dos)set encoding=prc set nu! 即可实现期望的语原创 2013-04-14 10:51:11 · 1127 阅读 · 3 评论 -
内核源代码的阅读
来源:国嵌视频 字符设备驱动程序设计 6-2 对于内核源代码,不必把他的每个函数看懂。可根据函数名大致知道其功能,还要培养感觉:关键的代码,把他看懂。以下一段代码为例:ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos){ ssize_t ret; if (!(fil原创 2013-04-15 16:39:11 · 482 阅读 · 0 评论 -
驱动程序的安装(直接编译进内核)
国嵌视频:Linux驱动程序介绍make menuconfig后出现的菜单依赖于内核的drivers/char/Kconfig文件vim Kconfig可见类似以下内容:config HW_CONSOLE bool (",,,,") #名称(括原创 2013-04-15 14:26:55 · 663 阅读 · 0 评论 -
locate命令出现的错误:cannot open ‘/var/lib/mlocate/mlocate.db’
在使用 locate 命令查找文件时,出现:locate: can not open `/var/lib/mlocate/mlocate.db': 没有找到指定数据库文件使用 #updatedb,即可以解决问题。(然后再locate)locate指令和 find找寻文件的功能类似,但 locate是透过 update程序将硬盘中的所有文件和目录资料先建立一个索引数据库,在执转载 2013-04-23 19:19:34 · 1156 阅读 · 0 评论 -
TQ2440更改IP、网关
直接修改文件:/etc/net.conf原创 2013-04-30 11:47:26 · 973 阅读 · 0 评论 -
学习小记(变参,串口通信)
笔记一void Uart_Printf(char *fmt,...){ va_list ap; //fmt之后的就是变参表 char string[256]; va_start(ap,fmt); //ap指向第一个变参 vsprintf(string,fmt,ap); //按照fmt格式拷贝a原创 2013-04-30 20:29:56 · 461 阅读 · 0 评论 -
学习小结(IPC、PCI)
IPC:进程间通信PCI:PCI是在CPU和原来的系统总线之间插入的一级总线,具体由一个桥接电路实现对这一层的管理,并实现上下之间的接口以协调数据的传送。原创 2013-07-29 15:16:36 · 1052 阅读 · 0 评论 -
多线程程序设计-变量
注意该图中的变量a,一个是在函数外作为全局变量(堆、数据段),一个是main函数中的局部变量(栈)。线程和它的进程共享数据段,线程不能识别其他函数(即使是生成它的进程)中的局部变量(去掉全局变量的声明编译出错),下图是它的运行结果:原创 2013-07-01 19:42:58 · 476 阅读 · 0 评论 -
VMware9.0下采用默认方式安装的Redhat Enterprise Linux 5后配置vim支持中文
本次安装后依照以前对Vim的配置无法使其显示中文,原因为没有安装中文支持包。以下是本次配置依照的网络资料:1、按顺序安装如下包:中文支持fonts-chinese-3.02-12.el5.noarch.rpmm17n-db-common-cjk-1.3.3-46.el5.noarch.rpmm17n-db-chinese-1.3.3-46.el5.noarch.rpm中原创 2013-06-30 22:01:47 · 923 阅读 · 0 评论 -
造成segment fault,产生core dump的可能原因
1.内存访问越界 a) 由于使用错误的下标,导致数组访问越界 b) 搜索字符串时,依靠字符串结束符来判断字符串是否结束,但是字符串没有正常的使用结束符 c) 使用strcpy, strcat, sprintf, strcmp, strcasecmp等字符串操作函数,将目标字符串读/写爆。应该使用strncpy, strlcpy, strncat, strlcat, snpr转载 2013-06-26 15:24:37 · 535 阅读 · 0 评论 -
EEPROM与FALSH的区别小结
网络资料:区别主要在擦除,EEPROM可按字节擦除,Flash只能块擦除。此外,容量,Flash可做得比较大。也有人把falsh看作EEPROM的一种。原创 2013-06-26 15:11:04 · 618 阅读 · 0 评论 -
Socket send函数和recv函数详解
send函数int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的第一转载 2013-05-10 09:20:09 · 389 阅读 · 0 评论 -
Qt学习小结(未完)
一、控件名称与函数名不能一样二、步骤:1、设置环境变量,可编写脚本一次设置完毕2、建立Qt项目文件3、编写ui2cpp文件,产生源代码*.h、*.cpp、moc_*.cpp4、添加mian.cpp文件,可基本通用5、产生*.pro文件,生成Makefile6、制作可执行文件和桌面图标7、编译生成的文件多要修改。原创 2013-05-18 20:13:46 · 588 阅读 · 0 评论 -
strcat实例
char yeelink[SIZE]="yeelink:";char *value="19\n";str=strcat(yeelink,value);此时str=“yeelink:19\n”原创 2013-05-04 19:12:53 · 562 阅读 · 0 评论 -
编译内核出现错误提示:line 0:syntax error near unexpected token '('
编译内核出现错误提示:/bin/sh: -c :line 0:syntax error near unexpected token '('参考资料如下:Why do I receive the message "/usr/bin/sh: -c: line 0: syntax error near unexpected token `(' and /usr/bin/sh: -c: l原创 2013-04-14 14:10:24 · 7906 阅读 · 0 评论 -
最简单的Makefile
ifneq ($(KERNELRELEASE),)obj-m :=hello.oelseKDIR:= /lib/modules/2.6.18-53.el5/buildall: make -C $(KDIR) M=$(PWD) modules clean: rm -f *.ko *.o *.mod.o *.mod.c .symversendif注意:1、ifneq后要原创 2013-04-14 15:47:48 · 580 阅读 · 0 评论 -
arm平台Linux内核制作
来自国嵌视频(内核驱动进阶3-1 嵌入式Linux内核制作):1、进入内核(linux2.6.30.4,在天嵌给的内核中解压该内核时用的命令tar -xvjf linux-,,, -C / ,此处加入了-C,见下文讲解)2、执行:/etc/init.d/xinetd restart 3、配置内核makefile menuconfig ARCH=arm(生成.config文件)原创 2013-04-14 20:18:12 · 608 阅读 · 0 评论 -
vim显示中文
在root用户的根目录~下创建.vimrc文件,在文件中输入以下内容: set fileencodings=utf-8,gb2312,gbk,gb18030set termencoding=utf-8 set fileformats=unixset encoding=prc退出即可显示汉字。附:linux中的四个特殊目录原创 2013-04-02 11:20:10 · 506 阅读 · 2 评论 -
file_operation(文件操作)file(文件)inode(节点)三者比较
file_operation就是把系统调用和驱动程序关联起来的关键数据结构。这个结构的每一个成员都对应着一个系统调用。读取file_operation中相应的函数指针,接着把控制权转交给函数,从而完成了Linux设备驱动程序的工作。 在系统内部,I/O设备的存取操作通过特定的入口点来进行,而这组特定的入口点恰恰是由设备驱动程序提供的。通常这组设备驱动程序接口是由结构file_operati转载 2013-03-31 16:19:22 · 685 阅读 · 0 评论 -
线程与进程的区别
用简单的例子说明, 你如果想同时拨电话给 A, B,那么可以这么做.用两个电话, 分别拨出,然后分别对他们说话 -- 多线程设计,线程共享全局数据找小张,小王,让他们分别打电话给A,B -- 多进程设计,多进程的数据是完全隔离,必须通过进程间通信,解决数据共享的问题.进程比线程更健壮稳定,但是设计更为复杂. 多线程很容易同步状态,相当于一个人同时处理多个任务, 多进程难度就转载 2013-03-16 11:18:18 · 394 阅读 · 0 评论 -
查找进程ID 2013-3-13笔记
查找进程:ps aux原创 2013-03-16 11:11:16 · 377 阅读 · 0 评论 -
2013-3-9学习笔记(samba)
使用samba或者tftp服务都需要关闭防火墙,今天的samba服务块中root下的文件除smb的之外不能修改,待完成。原创 2013-03-09 21:48:01 · 369 阅读 · 0 评论 -
下一步的学习打算
2440的启动代码还没有参透,能看懂的样子。接下来进入操作系统的学习,遇到和片子相关的地方再进一步学习掌握。原创 2013-03-02 13:37:12 · 874 阅读 · 0 评论 -
static关键字
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global va转载 2013-03-11 21:32:35 · 362 阅读 · 0 评论 -
异常返回的一段代码疑问
; /* 快速中断 */FIQ_Handler STMFD SP!, {R0-R3, LR} BL FIQ_Exception ; FIQ中断处理 LDMFD SP!, {R0-R3, LR} SUBS PC, LR, #4 从原创 2013-02-19 08:35:50 · 412 阅读 · 1 评论 -
linux解压 tar命令
tar [-cxtzjvfpPN] 文件与目录 ....参数:-c :建立一个压缩文件的参数指令(create 的意思);-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件!特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?转载 2013-03-20 11:26:42 · 401 阅读 · 0 评论 -
undefined reference to 'pthread_create'问题解决
着GUN/Linux编程指南中的一个例子输入编译,结果出现如下错误:undefined reference to 'pthread_create'undefined reference to 'pthread_join'问题原因: pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create(转载 2013-03-21 09:57:34 · 373 阅读 · 0 评论 -
2013-4-13 日志
今天重装了虚拟系统,复习了系统管理工具相关的国嵌课件内容。小结一下: 1、 对系统配置文件的更改要先备份,参考资料要记录下来(博客笔记)。 2、一个虚拟机可挂多个系统,弄乱了也没必要删。另外,下面配置vim的资料明天试着做出来。http://www.cnblogs.com/witcxc/archive/2011/12/28/2304704.htm原创 2013-04-13 21:32:48 · 455 阅读 · 0 评论 -
为打开sh消除乱码做的文件修改 (记住:以后修改文件前先备份)
试了N多方法,貌似在终端执行命令:export LC_ALL=zh_CN.GB2312;export LANG=zh_CN.GB2312是最有效的。=======================1.不管用那种ssh客户端,字体设定一定要设为可以显示中文的字体。2.远程的locale一定要设置为LANG=zh_CN.UTF-8=======================原创 2013-04-12 11:16:45 · 1452 阅读 · 0 评论 -
RAM、ROM、Flash
一直对RAM和ROM的区别都不是很清楚,今天小记一下:二者的全称:RAM:random access memory,随机存取存储器,分为静态和动态两种,掉电内容丢失。ROM:Read-Only Memory,只读存储器,掉电内容不丢失。Flash:全名Flash EEPROM Memory,Flash存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPRO原创 2013-04-09 22:21:39 · 623 阅读 · 1 评论 -
TQ2440 TFTP设置
启动开发板后查看网络设置:IP:192.168.1.6掩码:255.255.255.0Gateway:192.168.1.2DNS:202.96.128.86MAC:10:23:45:67:89:ab后更改为: ip:172.21.58.237 gateway:172.21.58.254PI原创 2013-04-07 13:54:26 · 856 阅读 · 0 评论 -
2013-04-07 周总结
这一周主要是观看视频驱动的内容,看到硬件驱动,也就是前天的样子开始在实际中操作,正式的还只是今天,这样看效率很低。客观上一个个的未知出错是一方面原因,最主要的还是玩的太多,今天大概玩了3小时,昨天就几乎没正经学习。尽力改正! 接下来这一周的安排: 1、先说小事, 准备毕业设计的元器件,明早。 2、接下来,驱动!把精力集中到驱动的学习,这一点原创 2013-04-07 22:04:35 · 394 阅读 · 0 评论 -
c编程练习
/*#include#includeint main(void){//**************************//测试函数://scanf()//malloc()//sizeof()//strlen()//***************************int a,b; //存放字符串的长度int max=1原创 2013-04-06 20:23:14 · 489 阅读 · 0 评论 -
linux网络编程TCP篇
参照例程编写的基于TCP的通信程序。server段建立之后,键入客户端运行命令和主机地址,能实现客户端中输入的信息打印到服务端。客户端:#include #include #include #include #include #include #include #include #define portnumber 3333struct sockaddr_in原创 2013-03-21 17:38:27 · 461 阅读 · 1 评论 -
Linux网络编程TCP参考代码
参考例程(国嵌实验代码):服务端:#include #include #include #include #include #include #include #include #define portnumber 3333int main(int argc, char *argv[]) { int sockfd,new_fd; struct原创 2013-03-21 17:47:53 · 533 阅读 · 0 评论