- 博客(56)
- 资源 (8)
- 收藏
- 关注
原创 ct技术综述(1)
1. CT技术概述1.1技术发展背景及趋势CT(计算机断层扫描)理论起源于20世纪初。1917年,奥地利数学家Radon提出了著名的Radon变换。此后美国物理学家确立了当代投影图像精确重建的数学方法。由物体的二维截面或断面向该平面内的各个方向作投影,可获得一系列一维投影函数。由这些一维投影函数来重建该二维截面称为图像重建。该技术是随着计算机技术的进步而发展起来并获得广泛应用的图像
2013-09-05 20:39:31
2192
转载 flash分区配置
uboot 与系统内核中 MTD分区的关系:分区只是内核的概念,就是说A~B地址放内核,C~D地址放文件系统,等等。1:在内核MTD中可以定义分区A~B,C~D。。。。。。并与以绝对的地址赋上值。bootloader中只要能将内核下载到A~B区的A地址开始处就可以,C~D区的C起始地址下载文件系统。。。这些起始地址在MTD的分区信息中能找到。bootloader对分区的概念不重要,
2013-02-16 15:24:48
813
转载 linux paging init 分析
一. 前言Linux中内存管理机制是一个很大的内容,在本文中,主要是来关注linux启动时,对于页表项的建立。其主要来关注paging_init这个函数,同时在其中掺杂cache,tlb等内容。二.paging_init详解这个函数看上去很简单,但是他却一点也不简单,在其中遍布了杀机,一步不慎就将陷入那不可自拔的深潭,咱们还是步步为营,一步一步来理解其中的种种。void __
2013-01-27 19:25:43
1131
转载 c语言结构体中的冒号的用法
结构体中常见的冒号的用法是表示位域。 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名
2013-01-26 15:13:24
794
转载 c++中构造函数初始化的方法以及主要区别
一、我的问题是关于初始化C++类成员的。我见过许多这样的代码(包括在你的栏 目中也见到过): CSomeClass::CSomeClass() { x=0; y=1; } 而在别的什么地方则写成下面的样子: CSomeClass::CSomeClass() : x(0), y(1) { } 我的一些程序员朋友说第二种方法比较好,但他们都不知道为什么是这样。你
2013-01-26 15:00:46
661
转载 我的第一次---用uboot 的tftp功能
http://blog.mcuol.com/User/Bios2010/article/25694_1.htm遇到的困难与解决过程就不废话了。。。直接说正确步骤:* 准备:目标板下载好uboot , 打开DNW之类的通信工具,设置目标板,代码如下:u-boot>setenv ipaddr 192.168.1.100 #设定目标板ip u-boot>setenv serverip
2013-01-21 13:29:43
787
转载 linux内核启动过程分析(2)
.4 __create_page_tables()__create_page_tables()函数同样也是位于arch/arm/kernel/head.S中,代码如下:__create_page_tables:pgtbl r4 @ page table address/** Clear the 16K level 1 swapper page table*/mov
2013-01-20 01:34:24
630
转载 ARM的字对齐问题总结
一、啥是字对齐?为啥要字对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问都可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就是对齐。字节对齐的原因大致是如下两条:1、平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否
2013-01-19 15:50:28
459
转载 U-BOOT移植心得
最近跑完裸机之后,便开始跑系统,但想着裸机与系统之间隔着个Bootloader,反正以前也没怎么深入研究,便说花一到两周时间来搞搞U-BOOT。 参考了fzb和赵春江两位大牛的,也研究了2010.06版本的 和2011.06版本两个经典版本,也对比了TQ(我买的板是天嵌的)自己写的U-BOOT,学到了不少,也发现了很多东西,以下便记录以下自己的心得吧,以便以后可以自己参考下。
2013-01-16 21:21:02
628
转载 U-BOOT下使用bootm引导内核方法
注:u-boot 使用的是打上:http://www.hhcn.com/cgi-bin/topic.cgi?forum=3&topic=651&show=0上keety大侠提供的补丁生成的u-boot-1.1.3 这段时间不断有人问我u-boot启动内核的问题,记得在上次提供的u-boot源码中提到了go的方案,不过其实u-boot本来有一种更好的方案:boot
2013-01-16 15:02:41
453
转载 zImage和uImage的区别
摘自: http://user.qzone.qq.com/85221810/blog/1247317141一、vmlinuzvmlinuz是可引导的、压缩的内核。“vm”代表“Virtual Memory”。Linux 支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制。Linux能够使用硬盘空间作为虚拟内存,因此得名“vm”。vmlinuz 的建立有两种方式。
2013-01-16 14:27:13
460
转载 利用mkimage 把zImage转换为uImage的方法
通常,u-boot为kernel提供一些kernel无法知道的信息,比如ramdisk在RAM中的地址。Kernel也必须为U-boot提供必要的信息,如通过mkimage这个工具(在u-boot代码的tools目录中)可以给zImage添加一个header,也就是使得通常编译的内核zImage添加一个数据头,把添加头后的image通常叫uImage,uImage是可以被U-boot直接引导的内核
2013-01-16 14:00:03
511
转载 用于linux与开发板之间下载文件的tftp配置详细总结
网上有很多关于tftp的配置,但是都不是很全,往往忽略细节,而linux下的实验细节决定成败,本文旨在给予刚接触linux与嵌入式开发的朋友以指点。若感觉对自己有帮助,记得留言顶。有问题我会上网时尽快恢复。 开发板:mini2440Uboot:必须支持tftp-clientLinux:企业版,内核2.6.18 特别注意:tftp配置前准备:关
2013-01-15 22:13:20
750
转载 关于uimage,zimage,mkimage等问题的总结(转)
内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。那么uImage又是什么的?它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其0x40之后与zImage没区别。
2013-01-15 22:11:35
682
转载 U_boot 的 bootcmd 和bootargs参数详解
转自 :http://linux.chinaunix.net/bbs/archiver/tid-1111568.html U-boot的环境变量值得注意的有两个: bootcmd 和bootargs。u-bootcmd 前面有说过bootcmd是自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使用的
2013-01-15 18:35:39
501
原创 uboot的nandflash启动saveenv时Writing to Nand... FAILED问题解决办法
之前碰到问题是saveenv命令时,出现Writing to Nand... FAILED!,说明写入nand有问题,上网查了之后解决了该问题。http://www.arm9home.net/simple/index.php?t8091.htmlhttp://www.linuxidc.com/Linux/2011-05/35982p3.htm第一个网址是一个网友对此问题的说明,第二个是
2013-01-13 23:53:23
2179
原创 uboot之nandflash相关程序解释
一 在start.S程序中,为了支持nandflash启动,修改&添加了了以下程序#ifndef CONFIG_SKIP_RELOCATE_UBOOTrelocate: /* relocate U-Boot to RAM */adrr0, _start /* r0 ldrr1, _TEXT_BASE /* test if we run from flash or
2013-01-13 14:25:27
900
转载 tar linux 命令说明
参数:-c :建立一个压缩档案的参数指令(create 的意思);-x :解开一个压缩档案的参数指令! -t :查看 tarfile 里面的档案!特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?-j :是否同时具有 bzip2 的属性?亦即是否需要用
2012-12-04 12:59:55
374
原创 win7通过SecureCRT链接ubuntu方法总结
win7通过SecureCRT链接ubuntu方法总结1.要将虚拟机中的ubuntu网卡设置为桥接。2.查看win7中ip地址3.将ubuntu的ip地址与win7的设置为同一网段sudo ifconfig eth0 192.168.0.1044.使用SecureCRT尝试链接5.如果链接有问题,参考csdn中我的转载和我的收藏的两篇文章:
2012-12-04 00:53:13
555
转载 SecureCrt链接ubuntu问题--The romote systemrefused the connection
解决方案:1.安装openssh-serverUbuntu缺省安装了openssh-client,所以在这里就不安装了,如果你的系统没有安装的话,再用sudo apt-get install openssh-server安装上即可。1.1输入命令:sudo apt-get install openssh-server1.2确认openssh-server是否启动了:
2012-12-04 00:41:54
668
转载 GNU ARM 汇编指令
第一部分 Linux下ARM汇编语法尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针、设置页表、操作 ARM的协处理器等。初始化完成后就可以跳转到C代码执行。需要注意的是,GNU的汇编器遵循AT&T的汇编语法,可以从GNU的站点(www.gnu.org)上下载有关规范。一. Linux汇编行结构任何汇编行都是如下结构:[:] [} @
2012-12-03 21:26:55
629
原创 linux内核学习初笔记(6)uboot第二阶段我的分析
uboot第一阶段分析完毕,根据第一阶段最后的分析,程序跳转到了ram中继续执行start_armboot这个函数。下面来看看这个函数主要完成了什么功能。首先要说明一个结构体,之前提到过,叫全局数据结构体,用于保存一些全局数据,在uboot第一阶段设置栈指针时,其实就已经为这个结构体在内存中留出了空间,它的地址就是在堆的地址下方,栈的上方。全局数据结构体定义如下所示:typedef
2012-12-01 13:36:30
1175
转载 ATPCS-ARM寄存器及值传递规则
对于ARM体系来说,不同语言撰写的函数之间相互调用(mix calls)遵循的是 ATPCS(ARM-Thumb Procedure Call Standard),ATPCS主要是定义了函数呼叫时参数的传递规则以及如何从函数返回,关于ATPCS的详细内容可以查看ADS1.2 Online Books Developer Guide的2.1节。简单ATPCS寄存器的使用规则: 1. 子
2012-11-30 23:48:21
1548
原创 linux内核学习初笔记(5)uboot第一阶段我的分析
终于把uboot两个阶段的所有代码都通读了一遍。总体的感觉是uboot的代码确实非常巧妙,读好的代码就如同读一本好书,反复读,认真思考,及时总结,这才是王道!好了,废话不多说,下面来总结我读uboot的经验,主要是给自己留个笔记,高手看到这篇文章完全可以飘过了~不送啊,谢谢~uboot启动是从哪里开始的呢?必须要看看lds文件,就是链接文件,这个文件用于指导gcc的链接器如何链接我们程序的
2012-11-29 22:51:41
1233
转载 u-boot 移植步骤详解
1 U-Boot简介U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。但是U-Boot不仅仅支持嵌入式Linu
2012-11-27 19:24:09
541
转载 uboot中main_loop分析
终于分析完了main_loop,发文纪念一下。 1。main_loop common/main.c main_loop又臭又长,去掉宏注释掉的部分就只剩下一点点了。如下: void main_loop (void){#ifndef CONFIG_SYS_HUSH_PARSER static cha
2012-11-27 17:01:10
424
转载 uboot笔记之makefile分析
开始学习uboot,对于linux我还是个新手,在这只是对学习uboot做下笔记,文中错误之处请谅解。使用的uboot版本是2009.11。要了解一个linux工程,一般要大致看懂它的makefile文件,我在学习uboot时也是先从其Makefile文件看起的,uboot的主Makefile就有三千多行,还有其他子文件夹中的Makefile。如果想我一样对linux还是个新手,那么一
2012-11-15 22:18:08
464
转载 uboot笔记之编译选项分析
uboot版本:2009.11uboot的编译选项差不多都写在顶层的config.mk中。下面分析此文件中和编译选项有关的部分。定义本地编译环境变量:ifeq ($(HOSTOS),darwin) #如果主机系统为darwin则主机编译器为cc否则为gcc HOSTCC = cc else HOSTCC = gcc endif HOSTCFLAGS = -Wall
2012-11-15 22:17:08
1989
转载 uboot之nand flash相关(3)
然后我们分析一下nand flash的读写等函数。既然是命令那自然要看到U_BOOT_CMD宏,这个宏分析的很多就不分析了。在cmd_nand.c文件中。nand的命令执行函数是do_nand。当然我们没有定义CFG_NAND_LEGACY,要看这个分支。do_nand函数也没有什么好分析的,摘取几个命令的处理分析下。1。nand bad命令 列出函数调用次序先,do_nand
2012-11-15 22:15:57
959
转载 uboot之nand flash相关(2)
下面分析nand_scan函数(在文件driver/mtd/nand/nand_base.c中,此文件提供一些默认的nand flash操作函数) ,这个函数主要 用默认函数填充一些未初始化的函数指针,读取flash id 使用默认数据填充mtd,chip相关结构体(如果板级文件没有提供相关支持)。此函数的分析直接写在代码注释中。/*** nand_scan - [NAND Interfa
2012-11-15 22:14:24
699
转载 uboot之nand flash相关(1)
这几天在做和nandflash相关的东西,之前uboot中nandflash部分搞得模模糊糊。这次就将uboot中nand flash相关部分分析清楚。本文uboot版本1.3.3按照uboot的执行流程,在lib_arm/board.c文件中的start_armboot函数中会调用到nand初始化。初始化的调用流程大致为:start_armbootnand_init
2012-11-15 22:12:59
622
转载 u-boot源码宏 MK_STR
在分析u-boot源码发现这样的宏:/** Macros to transform values* into environment strings.*/#define XMK_STR(x) #x#define MK_STR(x) XMK_STR(x)从注释来看是把x转换成字符串。找到了相关的资料,解读了这个define,还顺便认识了另外两个不常用的defi
2012-11-15 17:55:56
801
转载 u-boot编译过程完全分析
2.1 U-Boot Makefile分析2.1.1 U-Boot编译命令对于mini2440开发板,编译U-Boot需要执行如下的命令:$ make mini2440_config$ make all使用上面的命令编译U-Boot,编译生成的所有文件都保存在源代码目录中。为了保持源代码目录的干净,可以使用如下命令将编译生成的文件输出到一个外部目录,而不是在源代码目录中,下面的
2012-11-15 00:20:09
602
转载 决定从头开始分析u-boot-1.1.4源码(二)
从汇编启动代码跳转过来,进入到\u-boot-1.1.4\lib_arm\board.c中start_armboot函数void start_armboot (void){DECLARE_GLOBAL_DATA_PTR;ulong size;init_fnc_t **init_fnc_ptr;char *s;#if defined(CONFIG_VFD) || de
2012-11-14 22:13:43
500
转载 决定从头开始分析u-boot-1.1.4源码(一)
在网上看了不少有关u-boot的文章,有的讲得也比较详细,但我按照上面的步骤移植到我的2410开发板总是有点小问题,所以我决定从头开始分析u-boot-1.1.4的源码,希望能对u-boot有个深入的了解,最后移植到我的开发板上.这里需要有点汇编和C基础,我在2410上写过最小启动代码,这个相信问题不大. 下面就从代码的入口地址u-boot-1.1.4\cpu\arm920t\start.s处开始
2012-11-14 22:12:35
778
转载 决定从头开始分析u-boot-1.1.4源码(三)
决定从头开始分析u-boot-1.1.4源码(三) (2009-10-07 11:42) 分类: u-boot init_fnc_t *init_sequence[] = {cpu_init, /* basic cpu dependent setup */board_init, /* basic board dependent setup */interru
2012-11-14 22:10:54
973
转载 u-boot的其中过程
U-Boot启动过程可以分成两个阶段(stage)下面是u-boot启动过程的流程图其中左右两部分分别是启动过程的两个阶段第一阶段(stage 1):依赖于CPU体系结构的代码(如设备初始化代码等),一般用汇编语言来实现。主要进行以下方面的设置:设置ARM进入SVC模式、禁止IRQ和FIQ、关闭看门狗、屏蔽所有中断。设置时钟(FCLK,HCLK,PCLK)、清空I/D ca
2012-11-14 19:58:44
833
原创 linux内核学习初笔记(4)u-boot的board_init()函数clk_power与gpio妙用
在学到board_init()函数内部时发现,居然通过结构指针就可以设置cpu寄存器的值了,这还蛮有意思,研究一炮吧~经研究发现其实原理很简单,都不好意思写在这里了,所以大神看到这篇文章就请默默移驾吧~归根结底,就是这两句S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER(); S3C24X0_GP
2012-11-12 00:54:14
2749
转载 start_armboot()函数
start_armboot()函数主要初始化ARM系统的硬件和环境变量,包括Flash存储器、FrameBuffer、网卡等,最后进入U-Boot应用程序主循环。start_armboot()函数代码如下: 236 void start_armboot (void) 237 { 238 init_fnc_t **init_fnc_ptr; 239 char *s; 240 #ifndef CFG_
2012-11-12 00:39:22
857
转载 汇编 bne 1b 的问题
(以下是我转载的关于arm linux学习中经常用到的嵌入汇编程序的一个小小问题)今天在看Linux开发手册(P95)时遇到一下代码:1:ldr r4,[r2],#4str r4,[r1],#4cmp r1,r3bne 1b由以前的知识,如果写的bne 1是可以理解的,至于bne 1b确实不好理解,在网上搜索到对它的解释,下面说说:bne里的1b是向后跳转到局部标签
2012-11-11 22:45:33
999
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人