uboot 2013 07 运行流程

uboot 2013 07 运行流程
uboot 2013 07 运行流程

uboot 2013 07 运行流程

board:board/friendlyarm/mini2440

目前只支持nor启动

1、由编译链接文件u-boot.lds// arch/arm/cpu/u-boot.lds

可知,第一个运行的文件为:

CPUDIR/start.o//arch/arm/cpu/arm920t/start.S

1)设置异常向量

2)设置CPU的工作模式

3)关中断

4)关看门狗

5)设置CPU时钟

6)配置caches

7)禁mmu

8)bl lowlevel_init],跳到lowlevel_init.S

2、lowlevel_init.S//在samsung/smdk2410/lowlevel_init.S,自己添加进来

1)存储控制器初始化:位数,时序等

2)返回到start.S,然后bl _main,跳到crt0.S

3、crt0.S// arch/arm/lib

(此文件官方说明:

2013/1/ 8

arm: move C runtime setup code in crt0.S

Move all the C runtime setup code from every start.S

in arch/arm into arch/arm/lib/crt0.S. This covers

the code sequence from setting up the initial stack

to calling into board_init_r().

从2013/1/ 8起,把C语言运行环境的设置,放到crt0.S文件)

1)堆栈设置

2)blboard_init_f

4、board_init_f()// arch/arm/lib/board.c

1)第一阶段平台的初始化工作

timer_init,env_init, ram_init... 计算堆栈addr_sp,设置gd、bd结构体空间,异常中断堆空间,计算出重定向u-boot的位置addr,控制台初始化,打印一些消息

2)回到crt0.S

设置新的sp and gd

3)brelocate_code,跳到relocate.S

5、relocate.S//arch/arm/lib

1)把U-Boot复制到SDRAM中指定的位置处。

2)对rel.dyn进行重定向

3)回到crt0.S

对BSS段进行清零

4)ldrpc, =board_init_r跳到board_init_r()函数,进入真正的第二阶段

6、board_init_r()//arch/arm/lib/board.c 初始化NANDFLASH

初始化PC

设置IP地址

初始化各类外设,如IIC、LCD、键盘、USB等

进入main_loop();

7、main_loop();// common/main.c

Uboot的死循环,读取控制台命令

len = readline (CONFIG_SYS_PROMPT);

运行命令

rc = run_command(lastcommand, flag);

UBOOT命令详解

常用U-boot命令详解(z) 2010-09-30 15:05:52| 分类:学习心得体会|字号订阅 U-boot发展到现在,他的命令行模式已经非常接近Linux下的shell了,在我编译的 U-boot-2009.11中的命令行模式模式下支持“Tab”键的命令补全和命令的历史记录功能。而且如果你输入的命令的前几个字符和别的命令不重复,那么你就只需要打这几个字符即可,比如我想看这个U-boot的版本号,命令就是“ version”,但是在所有的命令中没有其他任何一个的命令是由“v”开头的,所以只需要输入“v”即可。 [u-boot@MINI2440]# version U-Boot 2009.11 ( 4月04 2010 - 12:09:25) [u-boot@MINI2440]# v U-Boot 2009.11 ( 4月04 2010 - 12:09:25) [u-boot@MINI2440]# base Base Address: 0x00000000 [u-boot@MINI2440]# ba Base Address: 0x00000000 由于U-boot支持的命令实在太多,一个一个细讲不现实,也没有必要。所以下面我挑一些烧写和引导常用命令介绍一下,其他的命令大家就举一反三,或者“help”吧! (1)获取帮助 命令:help 或? 功能:查看当前U-boot版本中支持的所有命令。 [u-boot@MINI2440]#help ?- alias for'help' askenv - get environment variables from stdin base - print or set address offset bdinfo - print Board Info structure bmp - manipulate BMP image data boot - boot default, i.e., run 'bootcmd' bootd - boot default, i.e., run 'bootcmd' bootelf - Boot from an ELF image in memory bootm - boot application image from memory bootp - boot image via network using BOOTP/TFTP protocol

Tiny6410_Uboot移植步骤详解

Uboot_for_Tiny6410_移植步骤详解 一、设计要求 1.目的 1)掌握U-boot剪裁编写 2)掌握交叉编译环境的配置 3)掌握U-boot的移植 2.实现的功能 1)U-boot编译成功 2)移植U-boot,使系统支持从NAND FLASH启动 二、设计方案 1.硬件资源 1)ARM处理器:ARM11芯片(Samsung S3C6410A),基于ARM1176JZF-S核设 计,运行频率533Mhz,最高可达 667Mhz 2)存储器:128M DDR RAM,可升级至 256M;MLC NAND Flash(2GB) 3)其他资源:具有三LCD接口、4线电阻 触摸屏接口、100M标准网络接口、标准DB9 五线串口、Mini USB2.0接口、USB Host 1.1、3.5mm音频输入输出口、标准TV-OUT

接口、SD卡座、红外接收等常用接口;另外 还引出4路TTL串口,另1路TV-OUT、 SDIO2接口(可接SD WiFi)接口等;在板的 还有蜂鸣器、I2C-EEPROM、备份电池、A D 可调电阻、8个中断式按键等。 2.软件资源 1)arm-linux-gcc-4.5.1(交叉编译) 2)u-boot-2010.09.tar.gz arm-linux-gcc-4.5.1-v6-vfp-20101103.t gz 三、移植过程 1.环境搭建 1)建立交叉编译环境 2)去这2个网站随便下载都可以下载得到最 新或者你想要的u-boot。( https://www.360docs.net/doc/9017199191.html,/batch.viewl ink.php?itemid=1694 ftp://ftp.denx.de/pub/u-boot/ )

i.MX6UL -- Linux系统移植过程详解(最新的长期支持版本)

i.MX6UL -- Linux系统移植过程详解(最新的长期支持版本) ?开发平台:i.MX 6UL ?最新系统: u-boot2015.04 + Linux4.1.15_1.2.0 ?交叉编译工具:dchip-linaro-toolchain.tar.bz2 源码下载地址: U-Boot: (选择rel_imx_4.1.15_1.2.0_ga.tar.bz2) https://www.360docs.net/doc/9017199191.html,/git/cgit.cgi/imx/uboot-imx.git/ Kernel: (选择rel_imx_4.1.15_1.2.0_ga.tar.bz2) https://www.360docs.net/doc/9017199191.html,/git/cgit.cgi/imx/linux-2.6-imx.git/ 源码移植过程: 1、将linux内核及uBoot源码拷贝到Ubuntu12.04系统中的dchip_imx6ul目录下; 2、使用tar命令分别将uboot和kernel解压到dchip_imx6ul目录下; 3、解压后进入uboot目录下,新建文件make_dchip_imx6ul_uboot201504.sh,且文件内容如下: ################################################################### # Build U-Boot.2015.04 For D518--i.MX6UL By FRESXC # ################################################################### #!/bin/bash export ARCH=arm export CROSS_COMPILE=/dchip-linaro-toolchain/bin/arm-none-linux-gnueabi - make mrproper # means CLEAN make mx6ul_14x14_evk_defconfig make2>&1|tee built_dchip_imx6ul_uboot201504.out 4进入kernel目录下,新建文件make_dchip_imx6ul_linux4115120.sh,且文件内容如下: ###################################################################

廉政风险防控行政权力运行流程图[1]1

**镇职权运行 流 程 图 二0一一年十一月 目录 1、农户申请林木采伐许可证程序图----------------------2 2、农村集体资产监督管理流程图------------------------3 3、土地权属争议裁决流程图----------------------------4

4、林地所有权、林地使用权争议裁决流程图--------------5 5、村民对选举程序或结果有争议裁决流程图--------------6 6、农业承包合同签证流程图----------------------------7 7、纪委职权流程图------------------------------------8 8、办理《独生子女父母光荣证》流程图------------------9 9、《流动人口婚育证明》发放和查验流程图----------- ---10 10、农业安全生产检查流程图---------------------------11 11、安全监督检查流程图-------------------------------12 12、财政各类资金拨付业务工作流程图-------------------13 13、残疾证审批发放工作流程图-------------------------14 14、村镇工程建设许可工作流程图------------------------15 15、综合治理工作流程图--------------------------------16 16、粮食直补资金、农资综合补贴流程图------------------17 17、村务公开民主管理规范化工作流程图------------------18 18、农村最低生活保障申报、审批程序流程图-------------- 19 19、农村五保规范申报、审批程序流程图----------------- 20 20、救灾救济流程图----------------------------------- 21 21、信访调解工作流程图------------------------------- 22 22、人民调解工作流程图------------------------------- 23 23、工资管理流程图----------------------------------- 24 24、股级干部选拔任命流程图----------------------------25 25、公车管理使用流程图-------------------------------- 26 26、年度考核流程图------------------------------------ 27 27、固定资产、办公用品的采购分配流程图----------------- 28 28、义务兵优待金发放流程图---------------------------- 29 29、征兵工作流程图------------------------------------ 30

u-boot启动分析

背景: Board →ar7240(ap93) Cpu →mips 1、首先弄清楚什么是u-boot Uboot是德国DENX小组的开发,它用于多种嵌入式CPU的bootloader程序, uboot不仅支持嵌入式linux系统的引导,当前,它还支持其他的很多嵌入式操作系统。 除了PowerPC系列,还支持MIPS,x86,ARM,NIOS,XScale。 2、下载完uboot后解压,在根目录下,有如下重要的信息(目录或者文件): 以下为为每个目录的说明: Board:和一些已有开发板有关的文件。每一个开发板都以一个子目录出现在当前目录中,子目录存放和开发板相关的配置文件。它的每个子文件夹里都有如下文件(以ar7240/ap93为例): Makefile Config.mk Ap93.c 和板子相关的代码 Flash.c Flash操作代码 u-boot.lds 对应的链接文件 common:实现uboot命令行下支持的命令,每一条命令都对应一个文件。例如bootm命令对应就是cmd_bootm.c cpu:与特定CPU架构相关目录,每一款Uboot下支持的CPU在该目录下对应一个子目录,比如有子目录mips等。它的每个子文件夹里都有入下文件: Makefile Config.mk Cpu.c 和处理器相关的代码s Interrupts.c 中断处理代码 Serial.c 串口初始化代码 Start.s 全局开始启动代码 Disk:对磁盘的支持

Doc:文档目录。Uboot有非常完善的文档。 Drivers:Uboot支持的设备驱动程序都放在该目录,比如网卡,支持CFI的Flash,串口和USB等。 Fs:支持的文件系统,Uboot现在支持cramfs、fat、fdos、jffs2和registerfs。 Include:Uboot使用的头文件,还有对各种硬件平台支持的汇编文件,系统的配置文件和对文件系统支持的文件。该目下configs目录有与开发板相关的配置文件,如 ar7240_soc.h。该目录下的asm目录有与CPU体系结构相关的头文件,比如说mips 对应的有asm-mips。 Lib_xxx:与体系结构相关的库文件。如与ARM相关的库放在lib_arm中。 Net:与网络协议栈相关的代码,BOOTP协议、TFTP协议、RARP协议和NFS文件系统的实现。 Tools:生成Uboot的工具,如:mkimage等等。 3、mips架构u-boot启动流程 u-boot的启动过程大致做如下工作: 1、cpu初始化 2、时钟、串口、内存(ddr ram)初始化 3、内存划分、分配栈、数据、配置参数、以及u-boot代码在内存中的位置。 4、对u-boot代码作relocate 5、初始化malloc、flash、pci以及外设(比如,网口) 6、进入命令行或者直接启动Linux kernel 刚一开始由于参考网上代码,我一个劲的对基于smdk2410的板子,arm926ejs的cpu看了N 久,启动过程和这个大致相同。 整个启动中要涉及到四个文件: Start.S →cpu/mips/start.S Cache.S →cpu/mips/cache.S Lowlevel_init.S →board/ar7240/common/lowlevel_init.S Board.c →lib_mips/board.c 整个启动过程分为两个阶段来看: Stage1:系统上电后通过汇编执行代码 Stage2:通过一些列设置搭建了C环境,通过汇编指令跳转到C语言执行. Stage1: 程序从Start.S的_start开始执行.(至于为什么,参考u-boot.lds分析.doc) 先查看start.S文件吧!~ 从_start标记开始会看到一长串莫名奇妙的代码:

学校权利运行流程图.doc

太和中学权力运行流程图 目录 1、“三重一大”事项决策流程图 2、学校干部选拔作用工作流程图 3、干部年度考核流程图 4、教职工年度考核流程图 5、教职工职称评审工作流程图 6、教职工岗位职务聘任流程图 7、教职工评先评优工作流程图 8、学籍管理工作流程图 9、教职工自动离职管理流程图 10、基建工作流程图 11、政府采购工作(办公用品采购)流程图 12、财务工作流程图 13、学校财务支配流程图

太和中学权力运行流程图 1、“三重一大”事项决策流程图 学校提出“三重一大”事项内容 调查研究 拟订方案 公示征求意见 组织论证 报局领导及相关科室审批后 公布执行 重大事项形成会议纪要 学校领导班子集体决策 学校监督小组全程跟踪监督

2、学校干部选拔任用工作流程图 组织或个人推荐、民主推荐 学校校务会审查确定提名 征求有关领导意见 班子会议讨论决定 上报市组宣科 组织考察 任职前公示 领导谈话 履行任命手续、材料归档

3、干部年度考核流程图 根据主管部门有关通知、制定年度考核学校研究决定、印发考核方案 实施考核 个人年度总结、组织民主测评 汇总考核材料、审定考核结果 公示考核结果 反馈被考核干部本人 考核结果存档

4、教职工年度考核流程图 考核前动员:学校召开年度考核工作会议, 教师自我总结:本人对照责任目标和考核内容要求总结全年工作,并填写考核登记 考核小组考核:学校考核工作小组对每位学校审核领导组评议、审定考核等次;考 教职工本人签名 考核等级汇总上报教育局人事科 考核结果存入本人档案

5、教职工职称评审工作流程图成立教师职称评审推荐工作小组、领导小公布评审条件标准及申报数额 参评教师填写基本情况表,提交相关材料 评审推荐工作小组进行资格审查 评审推荐工作小组对参评教师进行量化量化排序按推荐名额报领导小组审核,确推荐对象填写表格上报审核学校监督小

Uboot如何向内核传递参数

Uboot如何向内核传递参数 一:启动参数的传递过程 启动参数是包装在数据结构里的,在linux kernel启动的时候,bootloader把这个数据结构拷贝到某个地址, 在改动PC跳向内核接口的同时,通过通用寄存器R2来传递这个地址的值,下面这句话就是uboot跳向linux kernel的代码(bootm命令) theKernel (0, bd->bi_arch_number, bd->bi_boot_params); thekernel其实不是个函数,而是指向内核入口地址的指针,把它强行转化为带三个参数的函数指针,会把三个 参数保存到通用寄存器中,实现了向kernel传递信息的功能,在这个例子里,会把R0赋值为0,R1赋值为机器号 R2赋值为启动参数数据结构的首地址 因此,要向内核传递参数很简单,只要把启动参数封装在linux预定好的数据结构里,拷贝到某个地址(一般约定俗成是内存首地址+100dex) 二:启动参数的数据结构 启动参数可保存在两种数据结构中,param_struct和tag,前者是2.4内核用的,后者是2.6以后的内核更期望用的 但是,到目前为止,2.6的内核也可以兼容前一种结构,两种数据结构具体定义如下(arm cpu): struct param_struct { union { struct { unsigned long page_size; /* 0 */ unsigned long nr_pages; /* 4 */ unsigned long ramdisk_size; /* 8 */ unsigned long flags; /* 12 */ #define FLAG_READONLY 1 #define FLAG_RDLOAD 4 #define FLAG_RDPROMPT 8 unsigned long rootdev; /* 16 */ unsigned long video_num_cols; /* 20 */ unsigned long video_num_rows; /* 24 */ unsigned long video_x; /* 28 */ unsigned long video_y; /* 32 */ unsigned long memc_control_reg; /* 36 */ unsigned char sounddefault; /* 40 */ unsigned char adfsdrives; /* 41 */ unsigned char bytes_per_char_h; /* 42 */ unsigned char bytes_per_char_v; /* 43 */ unsigned long pages_in_bank[4]; /* 44 */ unsigned long pages_in_vram; /* 60 */

嵌入式Linux之我行 史上最牛最详细的uboot移植,不看别后悔

嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(一) 嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux 的朋友提供方便。如有错误之处,谢请指正。 ?共享资源,欢迎转载:https://www.360docs.net/doc/9017199191.html, 一、移植环境 ?主机:VMWare--Fedora 9 ?开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 ?编译器:arm-linux-gcc-4.3.2.tgz ?u-boot:u-boot-2009.08.tar.bz2 二、移植步骤 本次移植的功能特点包括: ?支持Nand Flash读写 ?支持从Nor/Nand Flash启动 ?支持CS8900或者DM9000网卡 ?支持Yaffs文件系统 ?支持USB下载(还未实现) 1.了解u-boot主要的目录结构和启动流程,如下图。

u-boot的stage1代码通常放在cpu/xxxx/start.S文件中,他用汇编语言写成;u-boot的stage2代码通常放在lib_xxxx/board.c文件中,他用C语言写成。各个部分的流程图如下:

2. 建立自己的开发板项目并测试编译。 目前u-boot对很多CPU直接支持,可以查看board目录的一些子目录,如:board/samsung/目录下就是对三星一些ARM 处理器的支持,有smdk2400、smdk2410和smdk6400,但没有2440,所以我们就在这里建立自己的开发板项目。 1)因2440和2410的资源差不多,主频和外设有点差别,所以我们就在board/samsung/下建立自己开发板的项目,取名叫my2440 2)因2440和2410的资源差不多,所以就以2410项目的代码作为模板,以后再修改

工商行政管理机关权力运行流程图

工商行政管理机关权力运行流程图(二) (行政处罚) 说明:1、本流程图制作的依据是《行政处罚法》和《工商行政管理机关行政处罚程序规定》;2、依法工商所等可以以自己的名义实施行政处罚的,参照本流程图操作;3、本流程图不含简易程序内容;4、虚线部分表示:没收扣押、封存等财物体现在行政处罚决定中;领导审批直接作出行政处罚决定,限于经复核听证,不改变原告知的事实、理由和依据的案件。 6

1、案件来源:工商行政管理机关依据监督检查职权,或者通过投诉、申诉、举报、其他机关移送、上级机关交办等途径发现、、查处违法行为。 承办机构应当指派人员自收到投诉、申诉、举报、其他机关移送、上级机关交办的材料之日起七个工作日内予以核查。特殊情况下,可以延长至十五个工作日。 2、核查申报:承办人员核查后,认为符合立案条件的,填写《立案审批表》,申报立案;不符合立案条件的,填写《不予立案审批表》,上报办案机构负责人。 3、决定立案:经办案机构负责人审查,报局长审批,决定立案的,由办案机构负责人指定2人以上办案人员负责调查。 不予立案:经办案机构负责人审查,报局长审批,决定不予立案。告知:对于不予立案的投诉、举报、申诉,经局长批准后,由办案机构将结果告知具名的投诉人、申诉人、举报人。由承办人员做好《行政处理告知记录》,必要时予以书面告知。书面告知应当制作《送达回证》。 4、调查取证:立案后,办案人员应当及时进行调查,收集、调取证据,并可以依照法律、法规的规定进行检查。 调查取证的要求: (1)首次向案件当事人收集、调取证据的,应当告知其有申请办案人员回避的权利。 (2)向有关单位和个人收集、调取证据时,应当告知其有如实提供证据的义务。 (3)办案人员调查案件,不得少于两人。办案人员调查取证时,一般应当着工商行政管理制服,并出示行政执法证。 (4)办案人员应当依法收集与案件有关的证据,包括制作询问(调查)笔录、调取书证、物证、视听资料、计算机数据;进行鉴定,取得鉴定结论;进行现场检查、勘验,制作勘验笔录、现场笔录等。 先行登记保存证据:(1)审批:采取先行登记保存措施或者解除先行登记保存措施,应当经工商行政管理机关负责人批准。由办案人员填写 《行政处罚有关事项审批表》,提出采取或者解除该措施的事实、理由和依据。经办案机构负责人审核,报局长审批。(2)实施:先行登记保存有关证据,应当当场清点,开具清单,由当事人和办案人员签名或者盖章,交当事人一份,并当场交付《先行登记保存证据通知书》。(3)先行登记保存证据超过7日自行解除;在7日内解除的,经局机关负责人批准,根据清单予以发还;转为采取行政强制措施的,按采取行政强制措施程序处理。 行政强制措施的实施和解除:(1)审批:采取查封、扣押等行政强制措施,或者解除行政强制措施,应当经工商行政管理机关负责人批准。 6

政工室规范权力运行制度及流程图【模板】

政工室规范权力运行制度及流程图 一、责任单位 **县公安局政工室 二、责任人 政工室实行党委委员、政工室主任分管,教导员负责下的岗位分工责任制,教导员主持政工室工作,并对政工室工作负全面责任,室内其他同志按照岗位分工,分别承担各自的工作任务。工作责任人为教导员、分管副主任、承办人。 三、权力行使及办理依据 (一)表彰奖励工作 1、权力行使依据 《中华人民共和国人民警察法》 2、办理依据 (1)《公安机关人民警察奖励条令》(公安部令第66号)(2)《湖南省公安厅表彰奖励审核审批程序》(湘公部[2003]36号) 3、审核呈报范围 (1)局属各单位个人、集体嘉奖以上奖励的审核呈报; (2)其它表彰的审核呈报。 4、表彰奖励审核呈报程序及时限 (1)单位申报

公安机关集体、个人工作成绩突出,根据有关规定应由县级以上公安机关予以表彰奖励的,由所在单位提出请奖意见,报政工室逐级呈报。 (2)汇总初审 政工室负责申报材料的受理汇总,在收到请奖材料后及时对材料进行初步审查,分类整理。 (3)有关部门审查 政工室汇总整理请奖材料后,即将名单和有关材料送局相关警种征求意见,并及时送局纪委、督察、法制等部门进行审查,提出审查意见。 (4)主任办公会研究审议 自接到请奖材料之日起,政工室一般应在15个工作日内召开主任办公会议进行审议,并视情邀请有关参战部门和指导机关参加讨论,对表彰奖励的对象、等级等提出意见。 (5)考察 根据主任办公会议研究的情况,对呈报表彰奖励对象、报记集体三等功以上的建制单位和案情重大复杂、记功等级高、记功对象较多的专案组进行考察。 考察组由政工室牵头组织,根据具体情况邀请纪委、法制、督察和相关业务部门参加,考察组一般不少于3人。 (6)局党委研究审定 审议、考察程序结束后,政工室主任将请奖事项提交局党

uboot启动常见的错误汇总

【uboot启动常见的错误汇总】 1. operating at 100M full duplex mode *** ERROR: `ethaddr' not set dm9000 i/o: 0x5000000, id: 0x90000a46 DM9000: running in 16 bit mode MAC: 00:00:00:00:00:00 operating at 100M full duplex mode Wrong Image Format for bootm command ERROR: can't get kernel image! 原因是:没有设置mac地址,需要重新设置 setenv ethaddr 01:02:03:04:05:06 saveenv/save 2.在开发板上ping ubuntu的ip地址ping不通 1.网线没插 2.ubuntu没有打开 3.ping 的过程中,ubuntu会扫描ip地址,会一直去获取ip地址,但是开发板没有分配ip地址的权利,也就是ubuntu获取不了ip地址,同时查看ubuntu 的ip地址是没有的。 1.设置临时的ip地址 sudo ifconfig eth0 192.168.1.* 2.永久生效 在ubuntu的右上角添加静态ip地址。 3.发现ubuntu的右上角网络图标类似于wifi的图标,如何将这个图标改成网络的 图标 sudo /etc//init.d/network-manager restart 如何执行之后,还是wifi图标 sudo vi /etc/NetworkManager/NetworkManager.conf managed=false false --->true sudo /etc//init.d/network-manager restart 如果执行之后,还是wifi图标 重启系统 4.你的pc电脑已经打开wifi网,需要将无线网关闭 5.虚拟机网卡设置出错,需要将nat设置为桥接 6.换开发板

uboot_freescale_imx51_start.s_详解

/* * *Purpose: the document is used to learn detailed information aboutimx51 cpu start.S, *referring to some documents on websites. *file address: U-boot-2009.08/Cpu/Arm_cortexa8/start.S * * writer: xfhai 2011.7.22 * *Instruction: *1.@xxxx : indicates annotation *2./***** *** *****/ : stand for code in my files *3.instructions refers to code not included in my file * */ Section 1: uboot overview 大多数bootloader都分为stage1和stage2两部分,u-boot也不例外。依赖于CPU体系结构的代码(如设备初始化代码等)通常都放在stage1且可以用汇编语言来实现,而stage2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。 1、Stage1 start.S代码结构 u-boot的stage1代码通常放在start.S文件中,他用汇编语言写成,其主要代码部分如下:==> (1)定义入口。由于一个可执行的Image必须有一个入口点,并且只能有一个全局入口,通常这个入口放在ROM(Flash)的0x0地址,因此,必须通知编译器以使其知道这个入口,该工作可通过修改连接器脚本来完成。 ==>(2)设置异常向量(Exception Vector)。 ==>(3)设置CPU的速度、时钟频率及终端控制寄存器。 ==>(4)初始化内存控制器。 ==>(5)将ROM中的程序复制到RAM中。 ==>(6)初始化堆栈。 ==>(7)转到RAM中执行,该工作可使用指令ldr pc来完成。 2、Stage2 C语言代码部分 lib_arm/board.c中的start arm boot是C语言开始的函数也是整个启动代码中C语言的主函数,同时还是整个u-boot(armboot)的主函数,该函数只要完成如下操作: ==>(1)调用一系列的初始化函数。 ==>(2)初始化Flash设备。 ==>(3)初始化系统内存分配函数。 ==>(4)如果目标系统拥有NAND设备,则初始化NAND设备。 ==>(5)如果目标系统有显示设备,则初始化该类设备。 ==>(6)初始化相关网络设备,填写IP、MAC地址等。 ==>(7)进去命令循环(即整个boot的工作循环),接受用户从串口输入的命令,然后进行相应的工作。

uboot启动代码详解

·1 引言 在专用的嵌入式板子运行GNU/Linux 系统已经变得越来越流行。一个嵌入式Linux 系统从软件的角度看通常可以分为四个层次: 1. 引导加载程序。固化在固件(firmware)中的boot 代码,也就是Boot Loader,它的启动通常分为两个阶段。 2. Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。 3. 文件系统。包括根文件系统和建立于Flash 内存设备之上文件系统,root fs。 4. 用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。常用的嵌入式GUI 有:MicroWindows 和MiniGUI 等。 引导加载程序是系统加电后运行的第一段软件代码。回忆一下PC 的体系结构我们可以知道,PC 机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR 中的OS Boot Loader(比如,LILO 和GRUB 等)一起组成。BIOS 在完成硬件检测和资源分配后,将硬盘MBR 中的Boot Loader 读到系统的RAM 中,然后将控制权交给OS Boot Loader。Boot Loader 的主要运行任务就是将内核映象从硬盘上读到RAM 中,然后跳转到内核的入口点去运行,也即开始启动操作系统。 而在嵌入式系统中,通常并没有像BIOS 那样的固件程序(注,有的嵌入式CPU 也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由Boot Loader 来完成。比如在一个基于ARM7TDMI core 的嵌入式系统中,系统在上电或复位时通常都从地址 0x00000000 处开始执行,而在这个地址处安排的通常就是系统的Boot Loader 程序。·2 bootloader简介 简单地说,Boot Loader (引导加载程序)就是在操作系统内核运行之前运行的一段小程序,它的作用就是加载操作系统, 实现硬件的初始化,建立内存空间的映射图,为操作系统内核准备好硬件环境并引导内核的启动。如上图所示的那样在设备的启动过程中bootloader位于最底层,首先被运行来引导操作系统运行,很容易可以看出bootloader是底层程序所以它的实现严重地依赖于硬件,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的BootLoader几乎是不可能的。尽管如此,一些功能强大、支持硬件环境较多的BootLoader也被广大的使用者和爱好者所支持,从而形成了一些被广泛认可的、较为通用的的bootloader实现。 2.1 Boot Loader 所支持的CPU 和嵌入式板 每种不同的CPU 体系结构都有不同的Boot Loader。有些Boot Loader 也支持多种体系结构的CPU,比如U-Boot 就同时支持ARM 体系结构和MIPS 体系结构。除了依赖于CPU 的体系结构外,Boot Loader 实际上也依赖于具体的嵌入式板级设备的配置。这也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种CPU 而构建的,要想让运行在一块板子上的Boot Loader 程序也能运行在另一块板子上,通常也都需要修改Boot Loader 的源程序。 2.2 Boot Loader 的安装媒介(Installation Medium)

国保大队权力运行制度及流程图

国保大队权力运行制度及流程图 目录 1、计算机国际联网备案管理制度…………………………2—6 2、互联网上网服务营业场所信息网络安全审核工作制度7—11 3、信息网络安全检查制度………………12—16 4、信息网络安全行政案件办理制度………………………17—23 5、非法侵入计算机信息系统和破坏计算机信息系统案件办理制度……………24—31

计算机国际联网备案管理制度 一、责任单位 安仁县公安局国保大队 二、责任人 国保大队实行大队长负责下的岗位分工负责制,大队长主持全面工作,大队其他同志按照岗位分工,分别承担各自的工作任务。计算机国际联网备案工作由国保大队承担,责任人为大队长、副大队长、受理人。受理人设立A、B角,当A角不能承担工作任务时由B角承担。 三、权力行使及办理依据 (一)权力行使依据 1、《中华人民共和国行政许可法》; (二)办理依据 2、《计算机信息网络国际联网安全保护管理办法》(1997年12月30日公安部第33号令)。 四、办理范围 县内计算机国际联网单位 五、办理程序及时限 (一)网上受理。用户网上填写《备案表》。 (二)后台初审。工作人员对基本信息进行审核。符合要求的,网上审核通过;不符合要求的,网上回复初审意见。

(三)复审。审查申报材料真实性和完整性等。符合法定条件的,报市局网技支队审核通过,我队进行备案,并发放网安图标;不符合法定条件的,告知其理由及相关权利。 办理时限为受理之日起二十个工作日,如遇备案系统升级调整等不可预测情况,可视情延长。 六、监督检查 (一)大队内部对备案工作情况进行经常性的自查自纠; (二)上级公安网技部门对本级监督检查; (三)法制部门进行执法质量检查; (四)接受社会监督。 七、责任追究 (一)过错责任内容 审批管理人员在行使职权过程中,有下列过错之一的,必须追究责任: 1、违反法律法规或其他规定办理的; 2、擅自设定收费项目,提高收费标准的; 3、以实施行政事业性收费的名义收取钱物,不出具任何票据的; 4、在办理过程中索取或者收受被许可人财物的; 5、其他违法违规行为。 (二)责任主体认定 审批管理人员违法违规或者因过失造成严重后果的,按下

Uboot启动代码解析

U-Boot启动过程 开发板上电后,执行U-Boot的第一条指令,然后顺序执行U-Boot 启动函数。看一下board/smdk2410/u-boot.lds这个链接脚本,可以知道目标程序的各部分链接顺序。第一个要链接的是cpu/arm920t/start.o,那么U-Boot的入口指令一定位于这个程序中。下面分两阶段介绍启动流程: 第一阶段 1.cpu/arm920t/start.S 这个汇编程序是U-Boot的入口程序,开头就是复位向量的代码。_start: b reset //复位向量 ldr pc, _undefined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, _data_abort ldr pc, _not_used ldr pc, _irq //中断向量 ldr pc, _fiq //中断向量 … /* the actual reset code */ reset: //复位启动子程序

/* 设置CPU为SVC32模式 */ mrs r0,cpsr bic r0,r0,#0x1f orr r0,r0,#0xd3 msr cpsr,r0 /* 关闭看门狗 */ ………… relocate: /* 把U-Boot重新定位到RAM */ adr r0, _start /* r0是代码的当前位置 */ ldr r1, _TEXT_BASE /*_TEXT_BASE是RAM中的地址 */ cmp r0, r1 /* 比较r0和r1,判断当前是从Flash启动,还是RAM */ beq stack_setup /* 如果r0等于r1,跳过重定位代码 */ /* 准备重新定位代码 */ ldr r2, _armboot_start ldr r3, _bss_start sub r2, r3, r2 /* r2 得到armboot的大小 */ add r2, r0, r2 /* r2 得到要复制代码的末尾地址 */ copy_loop: /* 重新定位代码 */ ldmia r0!, {r3-r10} /*从源地址[r0]复制 */

职权目录和权力运行流程图

北京将公开职权目录和权力运行流程图 全世界都在防治腐败,北京的做法是:既要管好权力的运行,更要从源头管好权力的配置。 昨天,北京市委市政府出台《北京市关于进一步加强廉政风险防控管理的意见》(以下简称《意见》),首次提出以科学配置权力为主线,建立健全决策权、执行权、监督权既相互制约、又相互协调的权力结构和运行机制,逐步建立分权制约机制,加强对权力的程序制约,形成权力结构配置标准,有效防控权力行使方面存在的廉政风险。 《意见》强调,围绕权力过于集中的岗位和存在廉政风险的环节,应逐步推进合理分权,单位内班子成员之间、部门之间科学配置权重,系统内实行权力下放、分级办理,加强岗位之间、环节之间的监督和制约。深入推进审批制度改革,进一步清理、减少和调整行政审批事项。加强对主要领导的权力制约,制定合理限权、规范用权的具体措施,贯彻落实集体领导与分工负责制度。涉及行政审批、行政处罚、司法、政府投资项目、公共资源交易、财政专项资金管理等领域的单位和部门,要重点加强分权制约机制建设。 北京提出,健全党政议事规则,细化决策事项特别是决策“三重一大”(重大决策、重要干部任免、重大项目安排、大额资金的使用)事项的内容、标准和程序,促进决策的科学化和民主化。在健全行政管理规则,建立决策、执行、反馈的完整流程,规范审批权和现场即决权行使的基础上,编制职权目录和权力运行流程图。 该目录和运行图将包括逐项列出权力行使的依据、界限、程序和责任,廉政风险及其等级等内容,以增强廉政风险程序控制的可操作性,使决策过程更加公开透明,有迹可循。 北京今后将要求职权目录、权力运行流程图和自由裁量权基准等内容,除涉及国家秘密、商业机密、个人隐私以及危害国家安全、公共安全、经济安全和社会稳定的以外,都要通过新闻媒体或政府网站向社会公开,接受社会监督,使权力在阳光下运行。(记者杜弋鹏)

u_boot初始化流程

U-Boot启动代码分析 U-boot的启动顺序分为stage1和stage2两部分,见下图。依赖于CPU体系结构的代码(如设备初始化代码等)通常放在stage1中用汇编语言实现,而在stage2则通常由C语言实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。以下主要梳理了stage2阶段函数的调用顺序以及每个函数的功能。 U-boot的启动顺序 C语言代码部分lib_arm/board.c中的start_armboot既是C语言开始的函数也是整个启动代码中C语言的主函数,同时还是整个U-boot的主函数,该函数只要完成如下操作。 (1)调用一系列的初始化函数。 (2)初始化Flash设备。 (3)初始化系统内存分配函数 (4)如果目标系统拥有NAND设备,则初始化NAND设备 (5)如果目标系统有显示设备,则初始化该类设备。 (6)初始化相关网络设备,填写IP、MAC地址等。 (7)进入命令循环(即整个Boot的工作循环),接收用户从串口输入的命令,然后进行相应的工作。 下面结合源码分析函数调用顺序以及函功能: 代码: void start_armboot (void) { init_fnc_t **init_fnc_ptr; char *s; int mmc_exist = 0;

#if defined(CONFIG_VFD) || defined(CONFIG_LCD) unsigned long addr; #endif 注释:从U-boot stage1中start.s程序调到这里执行start_armboot函数,这一段代码进行了变量声明,其中定义了一个名为init_fnc_ptr的双重指针。如果CONFIG_VFD或者CONFIG_LCD被定义了则声明一无符号长整型变量addr,本开发板中没有定义无需声明addr。 代码: /* Pointer is writable since we allocated a register for it */ gd = (gd_t*)(_armboot_start - CONFIG_SYS_MALLOC_LEN - sizeof(gd_t)); /* compiler optimization barrier needed for GCC >= 3.4 */ __asm__ __volatile__("": : :"memory"); //内存屏障,告诉编译器内存被修改过了 memset ((void*)gd, 0, sizeof (gd_t)); gd->bd = (bd_t*)((char*)gd - sizeof(bd_t)); //指向gd之前 memset (gd->bd, 0, sizeof (bd_t)); // gd->flags |= GD_FLG_RELOC; monitor_flash_len = _bss_start - _armboot_start; //u-boot映像的大小其中_armboot_start为code start ,_bss_start为code + data end == BSS start. 注释: gd = (gd_t*)(_armboot_start - CONFIG_SYS_MALLOC_LEN - sizeof(gd_t));//内存强制转换,gd为全局环境变量,gd指向uboot之前的地址; memset ():void * memset(void * s,char c,size_t count)将指针s所指地址以及之后count个地址中数值赋值为c。memset ((void*)gd, 0, sizeof (gd_t))的作用为:gd整个地址的值初始化为0;memset (gd->bd, 0, sizeof (bd_t))的作用为bd地址的值初始化为0。 代码: for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) { if ((*init_fnc_ptr)() != 0) { //相当于调用指针中的一个函数,如果不为0就表示死机 hang (); } } 注释:

相关文档
最新文档