上一页 1 2 3 4 5 6 7 ··· 11 下一页
摘要: 内核模块基础:1 可以通过编译进内核和动态加载内核模块来将驱动模块加载,调试过程中后者比较常用。2 相关命令: insmod rmmod modinfo lsmod dmesg modinfo cat /proc/devices cat /proc/moduls3 内核模块程序结构: 1 模块加载函数 --- module_init (initial_function) 其中initial_functon 常用__init修饰 2 模块卸载函数 --- module_exit (cleanup_function)其中cleanup_functon 常用__exit修饰 3 模块许可声明 ... 阅读全文
posted @ 2011-10-18 15:52 jialejiahi 阅读(953) 评论(0) 推荐(0) 编辑
摘要: 转自:http://www.blogjava.net/killme2008/archive/2009/06/28/284459.html在多进程、多线程并发的环境里,从概念上看,有多个进程或者多个线程在同时执行,具体到单个CPU级别,实际上任何时刻只能有一个进程或者线程处于执行状态;因此OS需要决定哪个进程执行,哪些进程等待,也就是进程的调度。一、调度的目标1、首先要区分程序使用CPU的三种模式:IO密集型、计算密集型和平衡型。对于IO密集型程序来说,响应时间非常重要;对于CPU密集型来说,CPU的周转时间就比较重要;对于平衡型程序来说,响应和周转之间的平衡是最重要的。2、CPU的调度就是要达 阅读全文
posted @ 2011-10-18 14:06 jialejiahi 阅读(17006) 评论(0) 推荐(5) 编辑
摘要: 这篇文章迟迟未写,有些歉意。闲话休提,转入正题。文件系统的移植也是分为制作和烧写两个步骤,制作的过程又分为内容制作和格式转换两个方面。制作文件系统命令的工具常用busybox(源码也很值得研究哦!),格式转换工具常用的如mkfs.jffs2, mkfs.cramfs, mkfs.yaffs2等,有的需要自己制作,有的标准linux已经提供。烧写也有两种方式,一种就是通过烧写工具直接烧写,比如在u-boot启动后,通过nand read 命令; 另一种是在一个已经制作好得文件系统中存放另一个需要烧写的文件系统,通过“挂载拷贝”的方式,把这个文件系统烧写到外存。所谓挂载拷贝,就是先通过mount命 阅读全文
posted @ 2011-10-13 20:34 jialejiahi 阅读(406) 评论(0) 推荐(0) 编辑
摘要: 在有了合适的交叉编译工具链和移植了bootloader的基础上,就要进行期待的内核移植。移植的主要工作是增减内核模块,重新编译定制好得内核,使之符合具体要求。本文简要的说明2.6.35内核在s3c2410平台的移植。主要写编译过程。步骤如下:1.下载并解压源码包2.进入源码根目录,修改MakefileARCH = armCROSS_COMPILE = arm-linux-3.添加网卡驱动一般嵌入式开发环境都是用网络文件系统,所以需要网卡驱动的支持。linux-2.6.35内核中有cs8900的驱动,但是我们需要修改。另外,也可以增加一个可以使用的cs8900网卡到我们的内核。这里使用第二种方法 阅读全文
posted @ 2011-10-13 15:23 jialejiahi 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 本文从以下几个方面粗浅地分析u-boot并移植到FS2410板上:1、u-boot工程的总体结构2、u-boot的流程、主要的数据结构、内存分配。3、u-boot的重要细节,主要分析流程中各函数的功能。4、基于FS2410板子的u-boot移植。实现了NOR Flash和NAND Flash启动,网络功能。 这些认识源于自己移植u-boot过程中查找的资料和对源码的简单阅读。下面主要以smdk2410为分析对象。出处:http://blog.mcuol.com/User/lvembededsys/Article/4728_1.htm一、u-boot工程的总体结构:1、源代码组织对于ARM而言, 阅读全文
posted @ 2011-10-10 14:48 jialejiahi 阅读(1498) 评论(0) 推荐(0) 编辑
摘要: 所谓移植,主要任务:搭建自己的交叉编译环境,编译制作bootloader, 编译制作内核镜像,编译制作根文件系统,烧写到目标板。1.关于搭建交叉编译环境,其实就是制作交叉编译工具链toolchain。就是用pc上的编译器,编译产生目标板的编译链接工具。需要准备相关的很多源码,大体分为编译工具和lib和include库两类,比如glibc, binutils, gcc (目标板),crosstool(制作用脚本)等。要注意版本,合适的cross toolchain是进行后续工作的基础。2.制作bootloader,bootloader主要完成硬件初始化,自搬移,加载操作系统几方面的工作,整个u- 阅读全文
posted @ 2011-10-10 12:05 jialejiahi 阅读(375) 评论(0) 推荐(0) 编辑
摘要: (一) 需求1 硬件需求:arm板,jtag接口,串口,网口,pc2 软件工具:linux虚拟机(配置tftp和nfs服务),h-jtag烧写器, secureCRT(远程终端)3 源码需求:bootloader(u-boot), 系统镜像(zImage 或 uImage),根文件系统rootfs(二)步骤1 配置双网卡和tftp,nfs服务2 通过h-jtag烧写uboot到开发板的nandfalsh上3 通过串口和调试终端连接到开发板,与uboot交互4 通过uboot命令setenv print设置好下载Image的环境5 通过uboot的tftp命令下载Image到内存(sdram)6 阅读全文
posted @ 2011-10-09 10:00 jialejiahi 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 1.As with the definition of a nonmember inline function, an inline member functionshould be placed in a header file. The class definition and the inline member functions aretypically placed in a header file given the name of the class.inline函数的定义要放到头文件里。2.We identify a constructor by giving it the s 阅读全文
posted @ 2011-10-08 08:23 jialejiahi 阅读(472) 评论(0) 推荐(0) 编辑
摘要: 相关函数 fork,execve,waitpid,popen 表头文件 #include<stdlib.h> 定义函数 int system(const char * string); 函数说明 system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命>令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT和SIGQUIT 信号则会被忽略。 返回值 =-1:出现错误 =0:调用成功但是没有出现子进程 >0:成功退出的子进程的id 如果sys 阅读全文
posted @ 2011-10-02 23:15 jialejiahi 阅读(30904) 评论(0) 推荐(2) 编辑
摘要: 当然是google的说明文档最权威了,给出链接:http://developer.android.com/guide/topics/fundamentals.html然后,是我自己的一点感悟:1.先上传个经典的架构图关于这幅图,值得说明的是:(1)应用开发者主要研究的是application framework这一层,随着google开发ndk开发模式,c/c++程序员可以编写本地库。对于内核研究人员,当然什么都是没有限制的,移植的主要任务是内核的移植,其他的都是选择性的。(2) 注意Dalvik Virtual Machine的位置,和libraries属于同一层,但是又用到了c/c++的l 阅读全文
posted @ 2011-09-30 14:53 jialejiahi 阅读(280) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 11 下一页