• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
一蓑烟雨
C/C++,Linux,语音技术
博客园    首页    新随笔    联系   管理    订阅  订阅

随笔分类 -  嵌入式linux学习笔记

上一页 1 2
U-Boot移植(12)u-boot的重要细节

摘要:主要过程:查看环境参数stdin,stdout,stderr中对标准IO的指定的设备名称,再按照环境指定的名称搜索devlist,将搜到的设备指针赋给标准IO数组stdio_devices[]。置gd->flag标志 GD_F*G_DEVINIT。这个标志影响putc,getc函数的实现,未定义此标志时直接由串口serial_getc和serial_putc实现,定义以后通过标准设备数组stdio_devices[]中的putc和getc来实现IO。下面是相关代码: void putc (const char c) { #ifdef CONFIG_SILENT_CONSOLE if (g 阅读全文
posted @ 2011-07-14 15:33 lovemu 阅读(581) 评论(0) 推荐(0)
U-Boot移植(10)u-boot重定位后的内存分布

摘要:对于smdk2410,RAM范围从0x30000000~0x34000000. u-boot占用高端内存区。从高地址到低地址内存分配如下: 显示缓冲区 (.bss_end~34000000) u-boot(bss,data,text) (33f00000~.bss_end) heap(for malloc) gd(global data) bd(board data) stack .... nor flash (0~2M)参考:http://deshunfan.blog.163.com/blog/static/34244101200972832324749/#comment=fks_08306 阅读全文
posted @ 2011-07-14 15:30 lovemu 阅读(1034) 评论(0) 推荐(0)
U-Boot移植(9)u-boot主要的数据结构

摘要:u-boot的主要功能是用于引导OS的,但是本身也提供许多强大的功能,可以通过输入命令行来完成许多操作。所以它本身也是一个很完备的系统。u-boot的大部分操作都是围绕它自身的数据结构,这些数据结构是通用的,但是不同的板子初始化这些数据就不一样了。所以u-boot的通用代码是依赖于这些重要的数据结构的。这里说的数据结构其实就是一些全局变量。 1)gd 全局数据变量指针,它保存了u-boot运行需要的全局数据,类型定义: typedef struct global_data { bd_t *bd; //board data pointor板子数据指针 unsigned long flags; / 阅读全文
posted @ 2011-07-14 15:28 lovemu 阅读(397) 评论(0) 推荐(0)
U-Boot移植(8)u-boot的流程

摘要:u-boot的启动流程: 从文件层面上看主要流程是在两个文件中:cpu/arm920t/start.s,lib_arm/board.c, 1)start.s 在flash中执行的引导代码,也就是bootloader中的stage1,负责初始化硬件环境,把u-boot从flash加载到RAM中去,然后跳到lib_arm/board.c中的start_armboot中去执行。1.1.6u-boot的start.s流程:硬件环境初始化: 进入svc模式;关闭watch dog;屏蔽所有IRQ掩码;设置时钟频率FCLK、HCLK、PCLK;清I/D cache;禁止MMU和CACHE;配置memory 阅读全文
posted @ 2011-07-14 15:26 lovemu 阅读(472) 评论(0) 推荐(0)
U-Boot移植(7)总结U-Boot工程的总体结构

摘要:3、u-boot的通用目录是怎么做到与平台无关的?include/configs/100ask24x0.h这个头文件中主要定义了两类变量。 一类是选项,前缀是CONFIG_,用来选择处理器、设备接口、命令、属性等,主要用来决定是否编译某些文件或者函数。另一类是参数,前缀是CFG_,用来定义总线频率、串口波特率、Flash地址等参数。这些常数参量主要用来支持通用目录中的代码,定义板子资源参数。这两类宏定义对u-boot的移植性非常关键,比如drivers/cs8900.c,对cs8900而言,很多操作都是通用的,但不是所有的板子上面都有这个芯片,即使有它在内存中映射的基地址也是平台相关的。所以对 阅读全文
posted @ 2011-07-14 15:25 lovemu 阅读(406) 评论(0) 推荐(0)
U-Boot移植(6)总结U-Boot工程的总体结构

摘要:1、源代码组织对于ARM而言,主要的目录如下:board 平台依赖 存放电路板相关的目录文件,每一套板子对 应一个目录。如smdk2410(arm920t) cpu 平台依赖 存放CPU相关的目录文件,每一款CPU对应一个目录,例如:arm920t、 xscale、i386等目录lib_arm 平台依赖 存放对ARM体系结构通用的文件,主要用于实现ARM平台通用的函数,如软件浮点。common 通用 通用的多功能函数实现,如环境,命令,控制台相关的函数实现。include 通用 头文件和开发板配置文件,所有开发板的配置文件都在configs目录下lib_generic 通用 通用库函数的实现n 阅读全文
posted @ 2011-07-14 15:24 lovemu 阅读(522) 评论(0) 推荐(0)
U-Boot移植(5)dnw串口终端没有反应

摘要:把上面生成的u-boot.bin文件,在cmd下利用sfj2410方式烧入板中,首先拔掉短路帽。。。然后经过连续几个0,之后,开始烧入板子,烧完后退出。重启板子,在串口端下竟然没有看见一点信息,心凉了一大截。。。呵呵!编译、连接没问题,烧写也没有问题,那为什么uboot启动不了呢?于是上了http://www.100ask.net论坛,这个论坛的超级版主就是《嵌入式linux应用开发完全手册》的作者,真的是百问网,问什么都答。。。开始怀疑是ylp2410的晶振问题,后来看了下优龙板晶振也都是12MHZ,在YLP2410_BIOS下启动linux过程也可以看到这方面的信息。。所以也不是晶振问题。 阅读全文
posted @ 2011-07-14 15:18 lovemu 阅读(1762) 评论(0) 推荐(0)
打补丁patch 命令使用

摘要:patch 命令用于打补丁,补丁文件是使用diff产生的patch 命令语法patch [ -b [ -B Prefix ] ] [ -f ] [ -l ] [ -N ] [ -R ] [ -s ] [ -v ] [ -c | -e | -n ] [ -d Directory ] [ -D Define ] [ -F Number ] [ -i PatchFile ] [ -o OutFile ] [ -p Number ] [ -r RejectFile ] [ -x Number ] [ File ]patch 命令失败或拒绝接受补丁时,会产生一个和原文件同名,以".rej&qu 阅读全文
posted @ 2011-07-14 15:16 lovemu 阅读(33491) 评论(0) 推荐(0)
U-Boot移植(4)增加对S3C2440的支持 (修改编译错误)

摘要:9、第一次make all,出现如下错误。 从上面错误可以看出明显是结构体中没有定义CAMDIVN,于是要找到定义这个时钟变量的地方,增加它。进入include/s3c24x0.h,找到下面的typedef struct处: typedef struct 的最后一行为新增的。 修改完后保存,再次回到顶层中,先make distclean。10、再一次make all,又出现了如下错误: 上面到底是什么错误呢?一时是想不通,吃个饭再说吧!吃完饭来到实验室之后,上网查了些资料,终于明白。要么U-Boot源码问题,要么是编译器的问题。源码是从官方下的,一般是不会有问题的,那么就是编译器问题,那编译器 阅读全文
posted @ 2011-07-14 15:14 lovemu 阅读(531) 评论(0) 推荐(0)
U-Boot移植(3)增加对S3C2440的支持

摘要:昨天跟张老师去打乒乓球了,还没写完今天接着写。。。。。6、S3C2440是S3C2410的改进版,它们的操作基本相似,只是在系统时钟的设置、NAND Flash控制器的操作等方面有一些小差别。。而下面我要做的就是令一个U-Boot二进制代码既可以在S3C2410上运行,也可以在S3C2440上运行。 虽说我的板也是S3C2410的,但是增加S3C2440的U-Boot练习,可以提高我们的能力,为后面的学习打下基础。 GSTATUS1寄存器的值:0x32410000表示S3C2410,0x32410002表示S3C2440。 S3C2410:FCLK=200MHZ;S3C2440:FCLK=40 阅读全文
posted @ 2011-07-14 15:10 lovemu 阅读(833) 评论(0) 推荐(0)
U-Boot移植(2)修改SDRAM的配置

摘要:接着上面的。。5、从查资料后,可知,BANK6的设置:位宽为32,宏B6_BWSCON刚好为DW32,无需改变。由于我所用的开发板的HCLK都设为100MHZ,需要根据SDRAM芯片的具体参数重新计算REFCNT寄存器的值。BANK6对应SDRAMB6_BWSCON可以看到我已经修改成新的值。。。对于其它的BANK,比如网卡芯片DM9000所在的BANK4,原来设置刚好匹配,无需更改;而对于其它的BANK1,BANK2,BANK3,BANK5,BANK7,在U-Boot中并没有使用到它们外接设备,也无需理会。 阅读全文
posted @ 2011-03-09 10:59 lovemu 阅读(953) 评论(0) 推荐(0)
U-Boot移植(1)新建一个开发板的相应目录和文件

摘要:今天很高兴,终于把U-Boot移植成功,在做的同时,我把一些步骤以截图记下。。现在我来慢慢回顾下过程。。1、从官网上下了个U-Boot-1.1.6,网址:http://sourceforge.net/projects/u-boot/。然后放到Ubuntu的/work/下,解压。2、进入board目录,将smdk2410复制为100ask24x0,并将board/100ask24x0/smdk2410.c改名为100ask24x0.c。3、将include/configs/smdk2410.h直接复制为100ask24x0.h4、修改以下两个Makefile,先看顶层的Makefile,增加底部 阅读全文
posted @ 2011-03-09 10:32 lovemu 阅读(708) 评论(0) 推荐(1)
U-Boot的启动过程源码分析(只有思路)

摘要:U-Boot属于两个阶段的Bootloader,第一阶段的文件为cpu/arm920t/start.S和 board/smdk2410/lowlevel_init.S,前者平台相关,后者开发板相关。U-Boot第一阶段代码分析1、硬件设备初始化cpu的工作模式,关闭WATCHDOG,设置FCLK、HCLK、PCLK的比例,关闭MMU、CACHE。2、为加载Bootloader的第二阶段代码准备RAM空间指初始化芯片3、复制Bootloader的第二阶段代码到RAM空间中将U-Boot的代码都复制到SDARM中 4、设置好栈留出一段内存供后面使用5、跳转到第二阶段代码的C入口点在跳转之前,还要清 阅读全文
posted @ 2011-03-09 10:18 lovemu 阅读(738) 评论(0) 推荐(1)
ubuntu 9.04+ylp2410 利用ftp传输文件

摘要:1、在linux操作系统下打开两个终端,一个用于串口终端,一个用于pc执行ftp连接。下面为一个终端显示结果。。2、有错误,显示read-only,命令理解错误。。。仔细查看ylp2410说明手册,原来优龙嵌入式linux系统里的根文件,大多数都不可写的,只有少数可写而目录tmp就可以读写,所以我们准备往/tmp 上传输文件。。。。继续。。执行3、进入里面看看,是否传上去了证明成功。。。。 阅读全文
posted @ 2011-03-08 16:59 lovemu 阅读(478) 评论(0) 推荐(0)
修正YLP2410使用手册中的cramfs的制作描述

摘要:修改(4)将chang内的内容进行压缩。。tar cvf 1.tar chang在当前目录下会生成1.tar2、交叉编译工具的使用:cross***和am-linux****经实验应使用am-linux****进行安装。。。。 阅读全文
posted @ 2011-03-08 16:52 lovemu 阅读(203) 评论(0) 推荐(0)
ubuntu 9.04 环境下实现ylp2410 Linux2.6.8内核编译

摘要:今天终于在ubuntu上完成了内核编译,现将过程记录如下。首先,先装qt一些相关的软件包,若后面提示有错误,很可能是缺少一些软件包,再使用sudo apt-get install **命令即可下载安装。。。。1.sudo -i 进入root2.把交叉编译工具复制到/work/tools/下,并解压arm-linux-gcc-3. 4 . 1.tar .bz2, 步骤省略,如下图所示。2.把交叉编译器路径添加到系统的路径中:在 bashrc的最后一行加上如下一行:PATH=$PATH:/work/tools/usr/local/arm/3.4.1/bin截图如下:启动新系统路径:#source 阅读全文
posted @ 2011-03-04 16:05 lovemu 阅读(908) 评论(0) 推荐(0)
使用SJF2410 和jtag烧写.bin的步骤及其存在的问题

摘要:1 、安装GIVEIO驱动(1)复制光盘中的giveio.sys到C:\WINDOWS\system32\drivers目录(2)打开"控制面板->添加硬件->",按照向导进行操作:Step1:开始安装Step2:选择“是的,我已经连接了此硬件”,这时不必连接实际的JTAG板。Step3:选择“添加新的硬件设备”。Step4:选择“安装我手动从列表选择的硬件”,如图。Step5:不选任何选项,直接点“下一步”,如图Step6:不选左右两侧列表中的任何选项,直接点“从磁盘安装”。Step7:选择要安装的驱动文件giveio.infStep8:点“下一步”Step9 阅读全文
posted @ 2011-02-25 23:30 lovemu 阅读(2001) 评论(0) 推荐(0)

上一页 1 2
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3