linux内核
文章平均质量分 70
David_xtd
这个作者很懒,什么都没留下…
展开
-
内核配置中Default kernel command string和uboot中bootargs变量的区别
1. 如果uboot的bootargs设置了,kernel的Boot options中的Default kernel command string设置与否,都不启作用,即bootargs覆盖掉设置的Default kernel command string,打印的信息也是bootargs传过来的command string。 2. 如果uboot的bootargs未设置的话,ker转载 2012-05-28 11:19:37 · 3638 阅读 · 1 评论 -
rcS中启动udevd
在目标板的/etc/init.d/rcS文件中以如下命令启动udevd:# start udevd./sbin/udevd -d/sbin/udevtrigger下面是启动过程,从网络配置开始:IP-Config: Guessing netmask 255.255.255.0IP-Config: Complete: device=eth0, addr=192.1原创 2012-06-25 11:20:04 · 6273 阅读 · 0 评论 -
Ubuntu下Hello World驱动实现全过程
今天是一个值得纪念的日子,我也不知道我花了多长时间才编译成功!在编写这个驱动的过程中,真的体会到驱动编程不是那么简单的~,现在有点小小的激动,真的,很不容易啊~我把整个过程在重复一遍吧!在编写这个驱动的过程中参考了网上的很多文档,最终的结果是弄的我头都晕了,每个人写的都不一样,其实我现在还有一些概念不是很清楚。1:到底丫的什么是内核源码树?2:为什么要编译内核源码树?1:内核源码树转载 2013-04-21 22:02:01 · 1127 阅读 · 0 评论 -
加载TQ2440驱动-Hello World 模块
开发平台:Ubuntu 10.04,内核版本2.6.32-33-generic,交叉编译器:天嵌公司提供的arm-linux-gcc 4.3.3,内核树:/opt/EmbedSky/linux-2.6.30.4/目标平台:天嵌公司的TQ2440开发板ARM9,内核版本2.6.30.41. 首先解压天嵌公司提供的内核源码包linux-2.6.30.4_2010053转载 2012-05-13 15:19:31 · 1404 阅读 · 0 评论 -
make menuconfig提示'make menuconfig' requires the ncurses libraries.
问题:原来使用的ubuntu 11.10系统由于误操作,导致系统崩溃,重新安装了ubuntu 11.10;在编译内核的时候,提示如下错误:dingq@wd-u1110:~/hwsvn/2sw/1prj_linux/pdu/kernel/linux-2.6.30$ make menuconfig *** Unable to find the ncurses libraries or原创 2012-08-07 13:18:36 · 19278 阅读 · 7 评论 -
PHY使用MII和RMII与SAM9260链接时需要注意的事项
问题1:采用newmsg-9260的开发板,开发板上的PHY使用RMII方式链接SAM9260,而实际的目标板上,为了将4层板改为2层板,将连接方式由RMII改为了MII,由此带来的问题如下:1. 不管使用newmsg更改过的源码还是从kernel.org下载的源码,不管如何更改内核选项,编译生成的内核uImage通过NFS方式挂载根文件系统时,总是不能成功挂载根文件系统,出现错误提示:原创 2012-06-18 15:37:39 · 3357 阅读 · 0 评论 -
浅析 Linux 中的时间编程和实现原理
引子我们都生活在时间中,但却无法去思考它。什么是时间呢?似乎这是一个永远也不能被回答的问题。然而作为一个程序员,在工作中,总有那么几次我必须思考什么是时间。比如,需要知道一段代码运行了多久;要在 log 文件中记录事件发生时的时间戳;再比如需要一个定时器以便能够定期做某些计算机操作。我发现,在计算机世界中,时间在不同场合也往往有不同的含义,让试图思考它的人感到迷茫。但值得庆幸的是,Linu转载 2014-01-14 08:34:04 · 4382 阅读 · 0 评论 -
linux中查看当前所用系统及内核版本的方法
问题:1. 当使用一台linux机器的时候,常常需要确认当前所用操作系统的版本信息,内核信息等,操作系统的版本信息可以通过以下命令完成,比如:lsb_release -a;cat /etc/issue而查看内核版本可以通过以下命令完成,比如:uname -a;cat /proc/version,这些命令比较难以记忆,本文试图解释一下这些命令名称的由来,以便于记忆。解决办原创 2014-01-31 20:03:15 · 29390 阅读 · 0 评论 -
在menuconfig中选择m和 y的区别
在menuconfig中选择m和 y的区别: y: 模块驱动编译到内核中,启动时自动加载 m:模块会被编译,但是不会被编译到内核中,只是生成.o文件,我们可以收集这些.o文件做到linux的文件系统中,然后用insmod实现动态加载。模块加载的两种方式1)、动态加载 动态加载是将驱动模块加载到内核中,而不能放入/lib/modul转载 2014-05-16 14:20:08 · 13181 阅读 · 1 评论 -
S3C6410开发板real6410 Uboot中内存地址的映射计算
问题:解决办法:原创 2014-05-19 18:00:39 · 3650 阅读 · 0 评论 -
Linux驱动虚拟地址和物理地址的映射
一般情况下,Linux系统中,进程的4GB内存空间被划分成为两个部分------用户空间和内核空间,大小分别为0~3G,3~4G。 用户进程通常情况下,只能访问用户空间的虚拟地址,不能访问到内核空间。 每个进程的用户空间都是完全独立、互不相干的,用户进程各自有不同的页表。而内核空间是由内核负责映射,它并不会跟着进程改变,是固定的。内核空间地址有自己对应的页表,内核的虚拟空间独立于其转载 2014-05-19 17:30:57 · 10188 阅读 · 0 评论 -
nfs: server 192.168.37.200 not responding, still trying的解决办法
问题:1. 想用NFS加载根文件系统到目标板,以对根文件系统进行调试。但是,主机配置好NFS的服务之后,通过# sudo mount -t nfs localhost:/nfsroot/root-pdu-422 /mnt# ls /mnt可以看到root-pdu-422中的内容,说明nfs服务器已经设置好了。2. 之前的系统曾经很顺利地通过nfs方式挂载根文件系统成功,现在原创 2012-08-17 18:56:58 · 1723 阅读 · 0 评论 -
目标板中加载驱动时出现version magic '2.6.24.3 preempt mod_unload ARMv5 ' should be '2.6.30 mod_unload ARMv5 '错误
问题:原来的内核版本2.6.24.3,交叉编译工具为ELDK4.1,通过rcS启动脚本自动加载驱动,继电器的驱动能在目标板上正常加载,并且运行正常。内核版本升级到2.6.30,交叉编译工具的版本也升级到ELDK4.2,但是通过rcS启动脚本加载继电器驱动的时候,出现错误提示:relay1218: version magic '2.6.24.3 preempt mod_unload原创 2012-06-30 15:48:59 · 8003 阅读 · 0 评论 -
新内核2.6.30编译完之后在目标板上看不到ttyS1
问题:在老内核2.6.24.3的目标板上,/dev下能看到ttyS0,ttyS1和ttyS2;没有ttys*文件;但是,内核升级到2.6.30后,在/dev下只能看到ttyS0和ttyS2,有ttys0~ttysf共16个文件;并且,不能通过open命令打开ttyS1设备。解决办法:1. 进入到内核所在目录linux-2.6.30,运行命令:make menucon原创 2012-08-07 16:10:44 · 3151 阅读 · 0 评论 -
build kernel时make oldconfig的作用
1. 在《Linux内核设计与实现3》(Linux Kernel Development 3)中写道:在你修改过配置文件之后,或者在用已有的配置文件配置新的代码树的时候,应该用命令make oldconfig验证和更新配置;这里,对make oldconfig的作用没有作明确的说明;2. 在linux-2.6.xx目录的README文件中,说明make oldconfig的作用:所有问原创 2012-05-28 16:59:56 · 32734 阅读 · 0 评论 -
EABI和OABI
相信很多学习嵌入式linux的人都碰到过这样一个问题:初学linux的时候大家都用的工具链版本多是3.4.5或3.4.2,名字为arm-linux-gcc或arm-softfloat-linux-gnu-gcc,可突然有一天发现这几个版本的编译器无法编译最新的内核了,并且发现人们都换了工具链了(arm-none-linux-gnueabi-gcc),怎么办,换呗。于是也都换成了这个工具链,转载 2012-05-29 09:53:10 · 1113 阅读 · 0 评论 -
Linux命令之sync - 强制将内存中的文件缓冲内容写到磁盘
用途说明Linux内核为了达到最佳的磁盘操作效率,会把需要写入到磁盘的数据现在内存中缓存起来,在合适的时候才真正写入到磁盘中,这在绝大多数情况都是没有任何问题的,而且提高了系统的效率,但是如果系统当机、掉电,就会有些文件内容不会保存下来。在Linux系统关机或者重启时,会自动把缓冲区的内容自动同步到磁盘中。我们也可以手工去执行sync命令,强制将内存中的文件缓冲内容写到磁盘,这个命令是通过调用转载 2012-05-29 19:01:08 · 4323 阅读 · 0 评论 -
WARNING: Unable to open an initial console
WARNING: Unable to open an initial console这个主要是没有建立控制台,解决方式:内核选择如下选项:Device Drivers ---> Character devices ---> [*] Virtual terminal Serial drivers ---> 8250/16550 and c转载 2012-05-29 18:51:12 · 8120 阅读 · 0 评论 -
Linux内核学习之四库全书
关于内核学习我建议不要上来就读内核而是先了解内核的构成和特性,然后通过思考发现疑问这时再去读内核源码。即先了解概貌在读局部细节。而且内核分成好多部分,不要只是按照顺序去读,应该针对某一部分比如内存管理或进程管理横向读几本书,这样可以理解很全面。Linux Kernel 四库全书1. Linux内核设计与实现 Edition 2 2. Linux设备驱动 Edition 3转载 2012-05-22 09:19:53 · 1224 阅读 · 0 评论 -
undefined reference to `__umoddi3'解决办法
主机配置:ubuntu 11.10下利用交叉编译工具arm-linux-gcc编译内核;目标板:AT91SAM9260内核版本:linux-2.6.24在编译内核linux-2.6.24的过程中遇到错误:kernel/built-in.o: In function `getnstimeofday':utsname_sysctl.c:(.text+0x23c64):原创 2012-05-22 16:56:42 · 9585 阅读 · 0 评论 -
Linux内核升级
Linux内核升级首先,确认当前linux系统的内核版本,使用命令:uname –a或 uname –r当前Linux系统版本是:linux-2.6.9-42第二步:下载新的内核源码,这里我们下载了linux-2.6.18,最新升级源码在网站上都免费下得到!第三步:将下载好的内核源码拷贝到目录下:第四步:把压缩包恢复解压:解压过程中:解压完成转载 2012-05-25 11:19:12 · 10658 阅读 · 3 评论 -
内核编译配置选项含义
Linux 2.6.19.x 内核编译配置选项简介作者:金步国版权声明本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布。任何人都可以自由使用、转载、复制和再分发,但必须保留作者署名,亦不得对声明中的任何条款作任何形式的修改,也不得附加任何其它条件。您可以自由链接、下载、传播此文档,但前提是必须保证全文完整转载,包括完整的版权信息和作译者声明。转载 2012-05-25 11:08:37 · 6440 阅读 · 0 评论 -
采用NAND Flash启动时出现Kernel panic - not syncing: No init found错误
通过NFS加载根文件系统的方式已经能够成功挂载根文件系统root422,并正常进入shell界面。然后,尝试将根文件系统写到Flash中,让Nand Flash自身启动后能挂载根文件系统。问题:首先,将root422制作成yaffs2镜像文件:mkyaffs2 -c 2048 root422 rootfs-20120625.yaffs2生成的rootfs-20120原创 2012-06-25 19:15:16 · 7112 阅读 · 2 评论 -
rmmod: chdir(/lib/modules): No such file or directory 解决方法
必须创建/lib/modules/2.6.30.4这样一个空目录,否则不能卸载ko模块.# rmmod nls_cp936rmmod: chdir(/lib/modules): No such file or directory但是这样倒是可以卸载nls_cp936,不过会一直有这样一个提示:rmmod: module 'nls_cp936' not found转载 2014-08-28 15:32:05 · 3364 阅读 · 0 评论