linux
bujigr
这个作者很懒,什么都没留下…
展开
-
linux错误一览表
可以在SHELL下通过perror这个命令来显示,对应的程序API也有perror这个函数。i=1; while [ $i -le 152 ]; do perror $i; let i=i+1; done; 我所在内核只定义到152,如下表所示:OS error code 1: Operation not pe转载 2014-02-20 20:39:42 · 684 阅读 · 0 评论 -
tq210 nand硬件校验
前几天匆忙间发了一篇关于S5PV210的8位HWECC驱动的文章,但是后来发现存在严重的Bug,就将原来那篇文章删除了,这里先说声抱歉,但是,HWECC能有效的节省CPU占用量,我仔细调试了S5PV210的HWECC部分,现在刚调好1位的HWECC,为了表示误发原来那篇文章的歉意,现在将代码放在这里,与大家分享:[plain] view plaincopy转载 2014-02-20 15:33:24 · 490 阅读 · 0 评论 -
tq210 usb host驱动
在写USB驱动程序的时候意外发现默认状态下内核没有驱动S5PV210的USB HOST控制器,于是,我自己动手移植了一下S5PV210的USB HOST模块,S5PV210的USB HOST控制器跟S3C2440的有些不同,S5PV210同时支持EHCI和OHCI接口(两者的区别自己谷歌搜一下),这样,S5PV210在功能上就完全支持USB2.0接口了。Linux内核(以3.8.3为例)默转载 2014-02-20 15:24:36 · 856 阅读 · 0 评论 -
tq210 nandflash 驱动
跟裸机程序一样,S5PV210的Nand flash模块跟S3C2440的Nand flash模块非常相似,如果不引入ECC,驱动程序的编写也非常简单,具体的分析及编写过程强烈推荐观看韦东山老师的视频教程,我是使用的Linux-3.8.6(Linux-3.8.3也一样)内核,驱动的API函数有些变化,不过原理是相通的,稍微看一下内核源码并参考下其他平台的相关代码就可以自己写出Nand flas转载 2014-02-20 15:25:48 · 523 阅读 · 0 评论 -
tq210 内核移植和根文件系统
由于之前做过2440和6410,鉴于时间原因,这里暂时跨过其他模块的裸机驱动和uboot移植,直接进入内核移植及驱动开发方面的学习。内核移植其实很简单,因为内核是linus率领的linux内核开发团队开发并维护的,我们只需要跟我们的平台交叉编译一下即可使用,但是,内核移植也不简单,因为内核移植起见出现任何问题都可能会被卡住,因为内核代码非常庞大,我们无法通读内核代码,下面是我移植期间遇到的转载 2014-02-20 15:21:22 · 1367 阅读 · 0 评论 -
tq210 按键驱动
经过前面的配置,S5PV210开发已经可以成功进入Linux控制台了,那么,有了这个环境就可以开始学习Linux驱动的编写和测试了。学习Linux设备驱动,通常是从字符设备驱动开始。我写的第一个驱动程序是Led的,其实也就是熟悉下字符设备驱动的基本结构,本文以中断方式的按键驱动为例,简单的介绍下字符设备驱动程序。一 按键驱动程序的简单实现下面是基于中断和消息的按键驱动程序,其工作原转载 2014-02-20 15:23:08 · 631 阅读 · 0 评论 -
tq210 nand8位HWECC与YAFFS2的OOB布局
最近又重新调试了下8位的HWECC,最后发现S5PV210的8位HWECC的确是可以用的,但是,使用yaffs2文件系统的时候的时候仍然会出问题,这是由于yaffs2文件系统与mtd层的oob布局冲突导致的。当我们使用8位HWECC时,会生成52字节的ECC校验数据并写入oob,而yaffs2自身也有28字节的数据写日oob,也就是说,至少需要28+52=80字节的oob空间,而对于我们的转载 2014-02-20 15:34:48 · 565 阅读 · 0 评论 -
S5pv210内核移植
由于之前做过2440和6410,鉴于时间原因,这里暂时跨过其他模块的裸机驱动和uboot移植,直接进入内核移植及驱动开发方面的学习。内核移植其实很简单,因为内核是linus率领的linux内核开发团队开发并维护的,我们只需要跟我们的平台交叉编译一下即可使用,但是,内核移植也不简单,因为内核移植起见出现任何问题都可能会被卡住,因为内核代码非常庞大,我们无法通读内核代码,下面是我移植期间遇到的转载 2014-03-19 07:36:40 · 1472 阅读 · 0 评论 -
linux内核启动过程分析之内核启动——阶段1
linux/arch/arm/kernel/head.S是linux内核映像解压后执行的第一个文件。 //PAGE_OFFSET = 0xc0000000; TEXT_OFFSET = 0x00008000;//PHYS_OFFSET = 0x30000000;#define KERNEL_RAM_VADDR (PAGE_OFFSET + TEXT_OFFSET)转载 2014-03-26 19:12:02 · 534 阅读 · 0 评论 -
linux grep命令
linux grep命令1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。2.格式grep [options]3.主要参数[options]主要参数:-c:只输出匹配行的计数转载 2014-08-28 10:35:19 · 425 阅读 · 0 评论 -
uboot makefile 的完全分析
2.1 U-Boot Makefile分析2.1.1 U-Boot编译命令对于mini2440开发板,编译U-Boot需要执行如下的命令:$ make mini2440_config$ make all使用上面的命令编译U-Boot,编译生成的所有文件都保存在源代码目录中。为了保持源代码目录的干净,可以使用如下命令将编译生成的文件输出到一个外部目录,而不是在转载 2014-02-17 09:55:26 · 607 阅读 · 0 评论 -
uboot的makefile分析
U-BOOT是一个LINUX下的工程,在编译之前必须已经安装对应体系结构的交叉编译环境,这里只针对ARM,编译器系列软件为arm-linux-*。U-BOOT的下载地址: http://sourceforge.net/projects/u-boot我下载的是1.1.6版本,一开始在FTP上下载了一个次新版,结果编译失败。1.1.6是没问题的。u-boot源码结构 解压就可转载 2014-02-17 17:52:21 · 477 阅读 · 0 评论 -
nandflash代码分析
nandflash在对大容量的数据存储中发挥着重要的作用。相对于norflash,它具有一些优势,但它的一个劣势是很容易产生坏块,因此在使用nandflash时,往往要利用校验算法发现坏块并标注出来,以便以后不再使用该坏块。nandflash没有地址或数据总线,如果是8位nandflash,那么它只有8个IO口,这8个IO口用于传输命令、地址和数据。nandflash主要以page(页)为单位进行转载 2014-02-16 18:13:33 · 656 阅读 · 0 评论 -
uboot在2440上的移植
uboot在2440上移植 2010-05-15 23:34:53| 分类: 学习笔记|举报|字号 订阅uboot是德国DENX小组的开发用于多种嵌入式CPU的bootloader程序, oot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。原创 2014-02-23 20:10:48 · 557 阅读 · 0 评论 -
uboot启动过程完全分析
1.1 U-Boot工作过程U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下:(1)第一阶段的功能Ø 硬件设备初始化Ø 加载U-Boot第二阶段代码到RAM空间Ø 设置好栈Ø 跳转到第二阶段代码入口(2)第二阶段的功能Ø 初始化本阶段使用的硬件设备Ø 检测系统内存映射Ø 将内核从Flash读取到RAM中转载 2014-02-17 09:58:10 · 716 阅读 · 0 评论 -
如何写makefile
什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一转载 2014-02-16 17:59:27 · 376 阅读 · 0 评论 -
nand flash裸机程序
开发板:mini2440Nand flash:K9F2G08U0B2,56M本程序实现功能:我是参考韦东山的第8章的裸机程序,但是他的nand flash型号是64MB的K9F12080M,所以我依照他的程序加以修改,下载到nand flash,从nand flash实现将main.c程序复制到sdram中执行。参考书:《嵌入式应用开发完全手册》《ARM处理器裸机开发实战---机制转载 2014-02-16 18:03:25 · 647 阅读 · 0 评论 -
2440裸机启动代码分析
启动文件就是引导ARM启动,并进入我们熟悉的C语言程序。它主要完成了ARM最基本的硬件初始化工作。虽然启动文件的内容大同小异(就是设置系统时钟、内存、中断向量表、栈等内容),而且只要有一个现成的启动文件,即使不用详细了解该文件的内容,直接进入C语言编程工作也可以对ARM进行操作,但我认为熟悉启动文件的内容,还是有必要的,它对我们熟悉ARM的体系结构,编写出更高效的程序是大有益处的。因此我花了一些时转载 2014-02-16 18:15:08 · 562 阅读 · 0 评论 -
开发板配置 make board-config
随便找个uboot源代码就可以啦。 首先进入顶层Makefile。有很多相对不同板子的配置,如:gec2440_config:unconfig @$(MKCONFIG) $(@:_config=) arm arm920t gec2440 samsung s3c24x01.配置编译uboot第一步都是make *****_config。既然是make就得转载 2014-02-16 17:56:48 · 1444 阅读 · 0 评论 -
arm-linux-gcc工具链下载
常用的交叉编译起可以从下边的站点下载: http://frank.harvard.edu/~coldwell/toolchain/http://www.kegel.com/crosstool/转载 2014-02-16 18:46:49 · 650 阅读 · 0 评论 -
shell变量
为使shell编程更有效,系统提供了一些shell变量。shell变量可以保存诸如路径名、文件名或者一个数字这样的变量名。shell将其中任何设置都看做文本字符串。有两种变量,本地和环境。严格地说可以有4种,但其余两种是只读的,可以认为是特殊变量,它用于向shell脚本传递参数。1 什么是shell变量按照定义来说,变量是存储设备中的一些可读写的存储单元.变量可以定制用转载 2014-02-16 17:54:21 · 465 阅读 · 0 评论 -
S3C2440与SDRAM与NAND与NOR的地址连线分析
Cecce S3C2440与SDRAM与NAND与NOR的地址连线分析 S3C2440有27根地址线ADDR[26:0],8根片选信号nGCS0-nGCS7,对应bank0-bank7,当访问bankx的地址空间,nGCSx引脚为低电平,选中外设。2^27=2^7 * 2^10 * 2^10 = 128Mbyte8*128Mbyte = 1Gbyte所以S3C2440总的转载 2014-02-16 18:10:25 · 1158 阅读 · 0 评论 -
Machine_desc & boot & Kernel_init & initcall & module_init
跳转到start_kernel中,与本题相关的主要是setup_arch()和rest_init(),其中前者执行的较早,而后者做为start_kernel执行的最后一个函数。函数start_kernel()和rest_init()定义在kernel/init/main.c中,函数setup_arch()定义在kernel/arch/arch_name/kernel/setup.c中。转载 2014-11-10 10:12:20 · 631 阅读 · 0 评论