当前位置:文档之家› 设置Bootloader内核的启动参数

设置Bootloader内核的启动参数

设置Bootloader内核的启动参数
设置Bootloader内核的启动参数

设置Bootloader内核的启动参数

转自:https://www.doczj.com/doc/693088701.html,/babyfans/article/details/5719725

设置内核的启动参数

应该说,在将内核映像和根文件系统映像拷贝到RAM 空间中后,就可以准备启动Linux

内核了。但是在调用内核之前,应该作一步准备工作,即:设置Linux 内核的启动参数。

Linux 2.4.x 以后的内核都期望以标记列表(tagged list)的形式来传递启动参数。启动参

数标记列表以标记ATAG_CORE 开始,以标记ATAG_NONE 结束。每个标记由标识被传递参数的tag_header 结构以及随后的参数值数据结构来组成。数据结构tag 和tag_header

定义在Linux 内核源码的include/asm/setup.h 头文件中:

/* The list ends with an ATAG_NONE node. */

#define ATAG_NONE 0x00000000

struct tag_header {

u32 size; /* 注意,这里size是字数为单位的*/

u32 tag;

};

……

struct tag {

struct tag_header hdr;

union {

struct tag_core core;

struct tag_mem32 mem;

struct tag_videotext videotext;

struct tag_ramdisk ramdisk;

struct tag_initrd initrd;

struct tag_serialnr serialnr;

struct tag_revision revision;

struct tag_videolfb videolfb;

struct tag_cmdline cmdline;

/*

* Acorn specific

*/

struct tag_acorn acorn;

/*

* DC21285 specific

*/

struct tag_memclk memclk;

} u;

};

在嵌入式Linux 系统中,通常需要由Boot Loader 设置的常见启动参数有:ATAG_CORE、

ATAG_MEM、ATAG_CMDLINE、ATAG_RAMDISK、ATAG_INITRD等。比如,设置ATAG_CORE 的代码如下:

params = (struct tag *)BOOT_PARAMS;

params->hdr.tag = ATAG_CORE;

params->hdr.size = tag_size(tag_core);

params->u.core.flags = 0;

params->u.core.pagesize = 0;

params->u.core.rootdev = 0;

params = tag_next(params);

其中,BOOT_PARAMS 表示内核启动参数在内存中的起始基地址,指针params 是一个str

uct tag 类型的指针。宏tag_next() 将以指向当前标记的指针为参数,计算紧临当前标

记的下一个标记的起始地址。注意,内核的根文件系统所在的设备ID就是在这里设置的。

下面是设置内存映射情况的示例代码:

for(i = 0; i < NUM_MEM_AREAS; i++) {

if(memory_map[i].used) {

params->hdr.tag = ATAG_MEM;

params->hdr.size = tag_size(tag_mem32);

params->u.mem.start = memory_map[i].start;

params->u.mem.size = memory_map[i].size;

params = tag_next(params);

}

}

可以看出,在memory_map[]数组中,每一个有效的内存段都对应一个ATAG_MEM 参数标记。

Linux 内核在启动时可以以命令行参数的形式来接收信息,利用这一点我们可以向内核提

供那些内核不能自己检测的硬件参数信息,或者重载(override)内核自己检测到的信息。

比如,我们用这样一个命令行参数字符串"console=ttyS0,115200n8"来通知内核以ttyS0

作为控制台,且串口采用"115200bps、无奇偶校验、8位数据位"这样的设置。下面是一

段设置调用内核命令行参数字符串的示例代码:

char *p;

/* eat leading white space */

for(p = commandline; *p == ' '; p++)

;

/* skip non-existent command lines so the kernel will still

* use its default command line.

*/

if(*p == '/0')

return;

params->hdr.tag = ATAG_CMDLINE;

params->hdr.size = (sizeof(struct tag_header) + strlen(p) + 1 + 4) >> 2;

strcpy(params->u.cmdline.cmdline, p);

params = tag_next(params);

请注意在上述代码中,设置tag_header 的大小时,必须包括字符串的终止符'/0',此外

还要将字节数向上圆整4个字节,因为tag_header 结构中的size 成员表示的是字数。

下面是设置ATAG_INITRD 的示例代码,它告诉内核在RAM 中的什么地方可以找到initr

d 映象(压缩格式)以及它的大小:

params->hdr.tag = ATAG_INITRD2;

params->hdr.size = tag_size(tag_initrd);

params->u.initrd.start = RAMDISK_RAM_BASE;

params->u.initrd.size = INITRD_LEN;

params = tag_next(params);

下面是设置ATAG_RAMDISK 的示例代码,它告诉内核解压后的Ramdisk 有多大(单位是K B):

params->hdr.tag = ATAG_RAMDISK;

params->hdr.size = tag_size(tag_ramdisk);

params->u.ramdisk.start = 0;

params->u.ramdisk.size = RAMDISK_SIZE; /* 请注意,单位是KB */

params->u.ramdisk.flags = 1; /* automatically load ramdisk */

params = tag_next(params);

最后,设置ATAG_NONE 标记,结束整个启动参数列表:

static void setup_end_tag(void)

{

params->hdr.tag = ATAG_NONE;

params->hdr.size = 0;

}

软启动器工作原理与主电路图

软启动器工作原理与主电路图 2010年02月22日星期一 11:00 1 软启动器工作原理与主电路图 软启动器采用三相反并联晶闸管作为调压器,将其接入电源和电动机定子之间。这种电路如三相全控桥式整流电路,主电路图见图1。使用软启动器启动电动机时,晶闸管的输出电压逐渐增加,电动机逐渐加速,直到晶闸管全导通,电动机工作在额定电压的机械特性上,实现平滑启动,降低启动电流,避免启动过流跳闸。待电机达到额定转数时,启动过程结束,软启动器自动用旁路接触器取代已完成任务的晶闸管,为电动机正常运转提供额定电压,以降低晶闸管的热损耗,延长软启动器的使用寿命,提高其工作效率,又使电网避免了谐波污染。软启动器同时还提供软停车功能,软停车与软启动过程相反,电压逐渐降低,转数逐渐下降到零,避免自由停车引起的转矩冲击。软启动与软停车的电压曲线见图2,3。 2 软启动器的选用 (1)选型:目前市场上常见的软启动器有旁路型、无旁路型、节能型等。

根据负载性质选择不同型号的软启动器。 旁路型:在电动机达到额定转数时,用旁路接触器取代已完成任务的软启动器,降低晶闸管的热损耗,提高其工作效率。也可以用一台软启动器去启动多台电动机。 无旁路型:晶闸管处于全导通状态,电动机工作于全压方式,忽略电压谐波分量,经常用于短时重复工作的电动机。 节能型:当电动机负荷较轻时,软启动器自动降低施加于电动机定子上的电压,减少电动机电流励磁分量,提高电动机功率因数。 (2)选规格:根据电动机的标称功率,电流负载性质选择启动器,一般软启动器容量稍大于电动机工作电流,还应考虑保护功能是否完备,例如:缺相保护、短路保护、过载保护、逆序保护、过压保护、欠压保护等。 3 Alt48软启动器的特点 Alt48软启动器启动时采用专利技术的转矩控制。转矩斜坡上升更快速,损耗更低。具有电动机和软启动器综合保护功能,能全时连续检测电机电流,提供电机可靠和完整保护,这种保护功能在启动结束旁路后仍能起作用,这是其它软启动器都不具备的。 Alt48在保持加速力矩的同时,实时计算定子和转子的功率。在整个加速周期连续计算电机功率因数和定子损耗,通过检测电压和电流来计算功率因数,并扣除定子损耗,得到实际的转子功率和电机力矩。 4 Alt48软启动器的应用

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

BootLoader引导程序

BootLoader引导程序 一、实验目的 1.学会配置linux下的minicom和windows下的超级终端 2.了解bootloader的基本概念和框架结构 3.了解bootloader引导操作系统的过程 4.掌握bootloader程序的编译方法 5.掌握bootloader程序的使用方法 二、实验内容 1. 学习x-loader 作用和编译过程 2.学习uboot作用和编译过程 3.学习bootloader的操作 三、实验设备 PentiumII以上的PC机, LINUX操作系统 四、BOOTLOADER程序说明 完整的系统由x-loader、u-boot、kernel(内核)、rootfs(根文件系统)组成,x-loader 是一级引导程序,其作用是初始化CPU,拷贝u-boot到内存,然后把控制权交给u-boot。当OMAP3530上电时,memory controller(内存控制器)还未初始化,这个任务便由完成的x-loader。初始化外部RAM控制器,把u-boot读到外部RAM,之后把控制入口交给。u-boot 是二级引导程序,其作用主要是引导内核,提供映像更新,同用户进行交互。系统结构图如 下: 1. BootLoader的作用 在嵌入式系统中,BootLoader的作用与PC机上的BIOS类似,其主要作用:(1)初始化硬件设备;(2)建立内存空间的映射图;(3)完成内核的加载,为内核设置启动参数。通过BootLoader可以完成对系统板上的主要部件如CPU、SDRAM、Flash、串行口等进行初始化,也可以下载文件到系统板上,对Flash进行擦除与编程。当运行操作系统时,它会在操作系统内核运行之前运行,通过它,可以分配内存空间的映射,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统准备好正确的环境。 通常,BootLoader 是依赖于硬件而实现的,特别是在嵌入式系统中。因此,在嵌入式系统里建立一个通用的 BootLoader 几乎是不可能的,不同的处理器架构都有不同的

QJR 软启动说明书

QJR系列 矿用隔爆兼本质安全型软起动器 使 用 说 明 书 上海佳洲防爆电器有限公司

使用前请认真阅读本说明书 本说明书根据GB9969.1《工业产品使用说明书总则》;GB9969.2《机电产品使用说明书编写规定》的有关规定要求和内容进行编制。 产品执行Q/JZ001-2011、MT/T943-2005和GB3836-2000等标准。 一、概述 1、产品特点 矿用隔爆兼本质安全型软起动器(以下简称软起动器)是机电一体化的新技术产品,该产品适用于交流380V、660V、1140V的电压异步电动机重负荷软起动,在正常运转状态下对电机进行各种保护。它具有起动电流小,起动速度平稳可靠,保护功能齐全,是我公司自行设计、开发的高技术产品。在矿用隔爆兼本质安全型真空电磁起动器的基础上,改直接起动或停止为软起动或软停止,降低了起动电流(由4Ie-7Ie改善为0.5Ie-4Ie可调),减少了起动时冲击电流对电网及负载的冲击。它用软件控制方式来平滑起动电机,一方面以软件控强电,另一方面使电动机转速由慢到快逐渐上升到额定转速,有效解决了直接起动或自耦降压起动、Y/Δ转换、降压起动造成的起动时瞬时电流尖峰冲击,起动二次冲击电流对负载产生冲击转距,当电网电压下降可能造成电机堵转等诸多问题,是传统的矿用隔爆本质安全型真空电磁起器的理想替代产品。 该产品采用全中文宽屏显示、并具有漏电闭锁、断相、过压、欠压、、过载、三相不平衡、短路等保护功能,并能储存相应的故障信息,以及运行电流,电压故障等工作状态信息。 2、主要用途及适用范围 本起动器主要用于有甲烷和煤尘爆炸环境的煤矿井下、露天煤矿、冶金矿山、港口码头、选煤厂、发电厂等对重负荷的运输设备实行软起动。 起动器可以就地、远距离起动、停止控制,及联机控制等多种方式;额定电压为1140V、660V、380V,频率是50Hz,额定电流在400A范围内的三相异步电机,起动方式可以是软起动,也可以像普通的磁力起动器一样直接带负荷起动。机壳外有隔离换向开关手柄,可以对电机的转向进行选择,必要时按下急停按钮,转动隔离换向手柄至分位置,直接分断电动机。 3、规格 电压等级:1140V、660V、380V。 电流等级:400A以下。 4、型号的组成及代表意义 Q J R-□/□ 额定电压:V 额定电流:A 软起动 隔爆兼本质安全型 起动器 5、软起动器的防爆型式与标志为:矿用隔爆兼本质安全型

软启动工作原理

软启动工作原理 软启动器电动机的应用 1、软启动器工作原理与主电路图 软启动器采用三相反并联晶闸管作为调压器,将其接入电源和电动机定子之间。这种电路如三相全控桥式整流电路,主电路图见图1。使用软启动器启动电动机时,晶闸管的输出电压逐渐增加,电动机逐渐加速,直到晶闸管全导通,电动机工作在额定电压的机械特性上,实现平滑启动,降低启动电流,避免启动过流跳闸。待电机达到额定转数时,启动过程结束,软启动器自动用旁路接触器取代已完成任务的晶闸管,为电动机正常运转提供额定电压,以降低晶闸管的热损耗,延长软启动器的使用寿命,提高其工作效率,又使电网避免了谐波污染。软启动器同时还提供软停车功能,软停车与软启动过程相反,电压逐渐降低,转数逐渐下降到零,避免自由停车引起的转矩冲击。软启动与软停车的电压曲线见图2,3。 2 软启动器的选用 (1)选型:目前市场上常见的软启动器有旁路型、无旁路型、节能型等。根据负载性质选择不同型号的软启动器。 旁路型:在电动机达到额定转数时,用旁路接触器取代已完成任务的软启动器,降低晶闸管的热损耗,提高其工作效率。也可以用一台软启动器去启动多台电动机。 无旁路型:晶闸管处于全导通状态,电动机工作于全压方式,忽略电压谐波分量,经常用于短时重复工作的电动机。 节能型:当电动机负荷较轻时,软启动器自动降低施加于电动机定子上的电压,减少电动机电流励磁分量,提高电动机功率因数。 (2)选规格:根据电动机的标称功率,电流负载性质选择启动器,一般软启动器容量稍大于电动机工作电流,还应考虑保护功能是否完备,例如:缺相保护、短路保护、过载保护、逆序保护、过压保护、欠压保护等。 3、Alt48软启动器的特点 Alt48软启动器启动时采用专利技术的转矩控制。转矩斜坡上升更快速,损耗更低。具有电动机和软启动器综合保护功能,能全时连续检测电机电流,提供电机可靠和完整保护,这种保护功能在启动结束后旁路仍能起作用,这是其它软启动器都不具备的。 Alt48在保持加速力矩的同时,实时计算定子和转子的功率。在整个加速周期连续计算电机功率因数和定子损耗,通过检测电压和电流来计算功率因数,并扣除定子损耗,得到实际的转子功率和电机力矩。 4 Alt48软启动器的应用 设计采用一拖二方案,见图4,即一台软启动器带两台水泵,可以依次启动,停止两台水泵。一拖二方案主要特点是节约一台软启动器,减少了投资,充分体现了方案的经济性,实用性。

详解bootloader的执行流程与ARM Linux启动过程分析

详解bootloader的执行流程与ARM Linux启动过程分析 ARM Linux启动过程分析是本文要介绍的内容,嵌入式Linux 的可移植性使得我们可以在各种电子产品上看到它的身影。对于不同体系结构的处理器来说Linux的启动过程也有所不同。 本文以S3C2410 ARM处理器为例,详细分析了系统上电后bootloader的执行流程及ARM Linux的启动过程。 1、引言 Linux 最初是由瑞典赫尔辛基大学的学生Linus Torvalds在1991 年开发出来的,之后在GNU的支持下,Linux 获得了巨大的发展。虽然Linux 在桌面PC 机上的普及程度远不及微软的Windows 操作系统,但它的发展速度之快、用户数量的日益增多,也是微软所不能轻视的。而近些年来Linux 在嵌入式领域的迅猛发展,更是给Linux 注入了新的活力。 一个嵌入式Linux 系统从软件角度看可以分为四个部分:引导加载程序(bootloader),Linux 内核,文件系统,应用程序。 其中bootloader是系统启动或复位以后执行的第一段代码,它主要用来初始化处理器及外设,然后调用Linux 内核。 Linux 内核在完成系统的初始化之后需要挂载某个文件系统做为根文件系统(Root Filesystem)。 根文件系统是Linux 系统的核心组成部分,它可以做为Linux 系统中文件和数据的存储区域,通常它还包括系统配置文件和运行应用软件所需要的库。 应用程序可以说是嵌入式系统的“灵魂”,它所实现的功能通常就是设计该嵌入式系统所要达到的目标。如果没有应用程序的支持,任何硬件上设计精良的嵌入式系统都没有实用意义。 从以上分析我们可以看出bootloader 和Linux 内核在嵌入式系统中的关系和作用。Bootloader在运行过程中虽然具有初始化系统和执行用户输入的命令等作用,但它最根本

汽轮机运行复习思考题答案

汽轮机运行部分复习思考题 一、填空题 1.冷态启动过程中,汽缸内壁受到 热压 应力,外壁受到 热拉 应力,且内壁的热应力为外壁的热应力的 两倍 2.由于法兰内外壁温差使法兰在水平面上产生热弯曲,从而使汽缸中部形成。 立 椭圆形,其法兰结合面出现 内张口 3.按启动时新蒸汽参数不同汽轮机启动方式可分为。 额定参数启动 和4.冷态启动汽轮机转子的外表面受到 滑参数启动 热压 应力作用,转子的中心孔受到 热拉 应力作用,稳定工况时热应力 为零 5.汽轮机启动过程中,按冲转时进汽方式不同可以分为。 高中压缸 启动和 中压缸 6.启动。 在第一调节汽门全开而第二调节汽门尚未开启的工况,此时调节级焓降达到了最大,流经第一喷嘴组的流量也达到了最大。此时位于第一喷嘴组后的调节级动叶的应力达到了最大7.当转子轴向膨胀量大于汽缸轴向膨胀量时,胀差为是调节级的危险工况。 正 ,汽轮机在启动及加负荷时,胀差为 正 8.如果惰走时间过长,则可能是; 有外界蒸汽漏入汽轮机,比如蒸汽或再热蒸汽管道阀门或抽汽逆止门不严,致使有压力蒸汽漏入汽缸等 9.在启停过程中上下汽缸存在温差,引起汽缸。 向上拱起 。称为 拱背 变形,汽缸的最大拱起也出现在 调节级区域内 10.影响汽轮机寿命的因素有。 高温蠕变损耗 和 低频疲劳损伤 11.通常汽轮机在启动和加负荷过程中,转子温升比汽缸温升; 快 ,因而胀差值为 正 12.汽轮机启动过程中,蒸汽热量以; 对流方式传给汽缸内壁,热量从汽缸内壁以 导热 13.若凝汽器真空降低且凝结水过冷度增大,说明方式传给外壁; 真空不严密、存在漏气 ,若仅凝汽器真空降低而凝结水过冷度不变,则说明 循环水量可能不足、或管道脏污等 14.当汽轮机受到 。 热冲击 时;对汽缸壁的加热急剧,汽缸壁内温度分布为 双曲线 15.“拱背”变形指的是型,温差大部分集中在内壁一侧, 在启停过程中上下汽缸存在温差,上缸温度高于下缸温度。上汽缸温度高、热膨胀大,下汽缸温度低、热膨胀小,引起汽缸向上拱起 二、选择题 。 1.启动时转子表面产生( A )应力。 (A)热压 (B)热拉 (C)/ (D)/ 2.汽轮机转子的最大弯曲部位在( A )附近。 (A)调节级 (B)中间段 (C)低压段 (D)/ 3.汽轮机启动过程中,汽缸和法兰内壁温度( B )外壁温度,热变形使得汽缸中部截面形成( )。 (A)高于、横椭圆 (B)高于、立椭圆 (C)低于、横椭圆 (D)低于、立椭圆 4.额定参数启动通过节流阀的节流损失( B ),调节级后蒸汽温度变化( )。 (A)大、小 (B)大、大 (C)小、大 (D)小、小 5.转子冲转前,真空过低会增大( B ),真空过高使得( )不易控制。

ABB软启动器参数设置方法

ABB软启动器参数设置方法 软起动器是一种集电机软起动、软停车、轻载节能和多种保护功能于一体的新颖电机控制装置,国外称为Soft Starter。它的主要构成是串接于电源与被控电机之间的三相反并联闸管及其电子控制电路。运用不同的方法,控制三相反并联闸管的导通角,使被控电机的输入电压按不同的要求而变化,就可实现不同的功能。 软起动器和变频器是两种完全不同用途的产品。变频器是用于需要调速的地方,其输出不但改变电压而且同时改变频率;软起动器实际上是个调压器,用于电机起动时,输出只改变电压并没有改变频率。变频器具备所有软起动器功能,但它的价格比软起动器贵得多,结构也复杂得多。ABB PSS系列软启动器有3个旋转设定开关合一个2位拨动开关,对于各种不同的应用场合都能完成基本的参数设定。 1.启动曲线——设定启动时电压提升的时间 说明:斜坡升压软起动。这种起动方式最简单,不具备电流闭环控制,仅调整晶闸管导通角,使之与时间成一定函数关系增加。其缺点是,由于不限流,在电机起动过中,有时要产生较大的冲击电流使晶闸管损坏,对电网影响较大,实际很少应用。启动时间可在1-30秒内调整。 2.停止曲线——设定停止时间电压下降的速度 说明:电机停机时,传统的控制方式都是通过瞬间停电完成的。但有许多应用场合,不允许电机瞬间关机。例如:高层建筑、大楼的水泵系统,如果瞬间停机,会产生巨大的“水锤”效应,使管道,甚至水泵遭到损坏。为减少和防止“水锤”效应,需要电机逐渐停机,即软停车,采用软起动器能满足这一要求。软起动器中的软停车功能是,晶闸管在得到停机指令后,从全导通逐渐地减小导通角,经过一定时间过渡到全关闭的过程。停车的时间根据实际需要可在0 ~ 30s调整。

软启动器的作用

电机直接启动的时候,电流可能会达到额定电流的6-7倍,会给工厂的其他用电设备带来问题。采用软启动时启动电流大概是额定电流的2-3倍。对于水泵来说,还有软停止,让水慢慢回落,消除水锤效果。简单的说就是缓缓启动,缓缓停止。这个缓缓的时间可以调节,大概是1-60秒。 软启动器以体积小,转矩可以调节、启动平稳冲击小并具有软停机功能等优点得到了越来越多的应用,大有取代传统的自耦减压、星-角等启动器的趋势。由于软启动器是近年来新发展起来的启动设备,在设计、安装、调试和使用方面还缺少指导性的规范与规程。我们在软启动器的安装、调试工作中也遇到了一些实际技术问题。例如:不同启动负载软启动器的选型、软启动冲击电流与过流保护定值的配合、软启动设备容量与变压器容量的关系等问题。 1、软启动器简介 目前,市场上常见的软启动器主要有电子式、磁控式和自动液体电阻式等类型。电子式以晶闸管调压式为多数。变频器在某种意义上也是一种软启动器,而且是能够真正地实现软启动的启动器,只是造价要高些。 晶闸管式软启动器是串接在电源与电动机之间的三组正反向并联的晶闸管,通过微电脑控制触发导通角实现交流调压。晶闸管式软启动器的启动方式有斜坡电压型、突跳加斜坡电压型和限流型等可供选择。

磁控式软启动器是利用磁放大器原理制造的串联在电源和电动机之间的三相饱和电抗器构成的软启动装置。启动时通过数字控制板调节磁放大器控制绕组的激磁电流,改变饱和电抗器的电抗值调节启动电压降,实现电动机软启动。不论晶闸管式软启动器还是磁控式软启动器在启动时只能调节输出电压,达到控制启动时的电压降、限制启动电流的目的。一般的软启动器不能调节电源频率,也就不能象变频器那样从零频零压开始启动电动机,实现无冲击启动。实际上软启动器在启动设备时还是要产生一定的冲击电流的;斜坡电压型控制软启动器的启动时的电压、电流变化曲线见图1所示。晶闸管式软启动器采用斜坡电压启动时,开始时要使软启动器输出一个初始电压(初始电压在80~280V之间可以调节),使电 动机产生足以克服机械设备的静摩擦的初始转矩,拖动设备开始转动,启动电流为Is。在微电脑的控制下,继续增加输出电压使电动机加速。当软启动器的输出电压接近额定电压时,电动机就已达到额定转速,Is降为负荷电流In。启动时间t1结束时,软启动器输出额定电压并发出旁路信号,使旁路接触器闭合,软启动器停止输出电压,电动机转入正常运行。软启动的初始转矩可以通过给定初始电压和启动时间进行调节,控制启动电流在2--4.5倍电动机额定电流以内。 低压软启动器的停车方式主要有自由停车,软停车,制动停车三种。传统的电动机停车方式常用自由停车,但有许多应用场合,自由停车会产生很大问题,如高层建筑的水泵系统,如果采用自由

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标记开始会看到一长串莫名奇妙的代码:

bootloader

Boot Loader的启动流程和开发经验总结 Windows CE最大程度继承了桌面版Windows的丰富功能,但是Windows CE并不是一个通用的安装版操作系统。在形形色色的嵌入式设备世界里,一款CE系统通常只会针对某一种硬 件平台生成。 一般来说,Windows CE的开发过程可以分为:0AL(OEM Abstraction Layer)、驱动、应用程序开发三个步骤。其中,0AL开发最基本的一步是板级支持包(BSP),而BootLoader 设计则在BSP开发中具有极为关键的地位。 1.什么是BootLoader 嵌入式系统的启动代码一般由两部分构成:引导代码和操作系统执行环境的初始化代码。其中引导代码一般也由两部分构成:第一部分是板级、片级初始化代码,主要功能是通过设置寄存器初始化硬件的工作方式,如设置时钟、中断控制寄存器等,完成内存映射、初始化MMU等。第二部分是装载程序,将操作系统和应用程序的映像从只读存储器装载或者拷贝到系统的RAM中并执行。 (1)什么是板级BSP? BSP(Board Support Package)是板级支持包,是介于主板硬件和操作系统之间的一层,主要是为了支持操作系统,使之能够更好的运行于硬件主板。不同的操作系统对应于不同形式的BSP,例如WinCE的BSP和Linux的BSP相对于某CPU来说尽管实现的功能一样,可是写法和接口定义是完全不同的。所以,BSP一定要按照该系统BSP的定义形式来写,这样才能与上 层OS保持正确的接口,良好的支持上层OS。 (2)什么是Boot Loader

在BSP中有一个重要的组成部分就是BootLoader,它是在操作系统内核运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,为调用操作系统内核准备好环境。 一般来说,在嵌入式世界里BootLoader 是严重地依赖于硬件的,因此想建立一个通用的 BootLoader 几乎是不可能的。不同的 CPU 体系结构有不同的BootLoader,而且除了依赖于 CPU的体系结构外,BootLoader还依赖于具体的嵌入式板级设备的配置。这也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种 CPU 结构而构建的,要想让运行在一块板子上的 BootLoader 程序也能运行在另一块板子上,通常也都需要修改 BootLoader 的源程序。 2.BootLoader在PC机与嵌入式的区别比较 (1)引导程序在PC机和嵌入式上的区别 一般来说,在PC的硬件平台上,由于硬件启动根本就不是通过BootLoader(而是通过BIOS),所以BootLoader就不需要对CPU加电后的初始化做任何工作。在桌面系统中,有以下几种设备可以作为启动设备使用:硬盘、USB盘、光盘驱动器、还有网卡的Boot ROM 等。但无论选择了哪一种启动设备,操作系统都会去将该设备起始地址的内容读入内存,BIOS 将控制移交给引导装载程序。如果启动设备是IDE硬盘,这时通常将引导装载程序装入第一个扇区(通常被称做主引导扇区,MBR),然后将内容读入内存再运行。 在嵌入式平台上,引导装载程序是在硬件上执行的第一段代码,通常将引导程序放置在不易丢失的存储器的开始地址或者是系统冷启动时PC寄存器的初始值。在嵌入式系统中,通常并没有像BIOS那样的固件程序,因此整个系统的加载启动任务就完全由BootLoader来完

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 */

软启动原理图

软启动器原理图 软启动器主要功能是改变电源电压,在过去相比于变频器高额的价格,软启动器低廉的价格受到很多消费者的青睐。接下来就让我们一起通过软启动器原理图来了解下软启动原理吧。 软启动器原理:软启动器(软启动器)是一种集电机软起动、软停车、轻载节能和多种保护功能于一体的新颖电机控制装置,国外称为s oft start er。软启动器采用三相反并联晶闸管作为调压器,将其接入电源和电动机定子之间。这种电路如三相全控桥式整流电路。使用软启动器启动电动机时,晶闸管的输出电压逐渐增加,电动机逐渐加速,直到晶闸管全导通,电动机工作在额定电压的机械特性上,实现平滑启动,降低启动电流,避免启动过流跳闸。待电机达到额定转数时,启动过程结束,软启动器自动用旁路接触器取代已完成任务的晶闸管,为电动机正常运转提供额定电压,以降低晶闸管的热损耗,延长软启动器的使用寿命,提高其工作效率,又使电网避免了谐波污染。软启动器同时还提供软停车功能,软停车与软启动过程相反,电压逐渐降低,转数逐渐下降到零,避免自由停车引起的转矩冲击。 现阶段,我们的软启动器产品主要在以下七个行业广泛应用:电力、冶金、建材、机床、石油化工、市政、煤炭。随着我国变频市场的飞速发展,小规模的生产企业被淘汰,因此软启动器市场更加集中发展。 鱼儿,在水中串上串下,吐着顽皮的泡泡;鸟儿从荷叶上空飞过,想亲吻荷花姑娘的芳泽。四周的花儿,紫的,黄的,白的,红的,竞相开放。大红花儿,张着大嘴,放声歌唱;灯笼花儿,随风摇坠,四处飘香;

剑兰花儿,形态独特,毫不逊色。它们与荷塘之景交相辉映,美不胜收此时,我的心情兴奋到极点,好久好久没有看过如此美的景色了。若果我有一双会画画的手,我定把这如痴如醉的荷塘活色生香的描绘一番;若果我有一部高像素的相机,我定不放过每个花开的镜头;若果我是一个诗人,我定把这荷塘每片光鲜艳丽的色泽融入人生的诗篇。我更期待,期待盛夏的荷塘色,期待那更加妖娆多姿,色泽鲜艳的荷花,期待初夏生机勃勃、挥汗如雨的激情生活!

bootloader分析

Bootloader分析

?熟悉BootLoader的实现原理?认识Bootloader的主要任务?熟悉BootLoader的结构框架?U-boot使用

引言本章详细地介绍了基于嵌入式系统中的OS启动加载程序――Boot Loader的概念、软件设计的主要任务以及结构框架等内容。 一个嵌入式Linux系统从软件的角度看通常可以分为四个层次: ?1.引导加载程序。包括固化在固件(firmware)中的boot代码(可 选),和Boot Loader两大部分。 ?2.Linux内核。特定于嵌入式板子的定制内核以及内核的启动参数。 ?3.文件系统。包括根文件系统和建立于Flash内存设备之上文件 系统。通常用ram disk来作为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程序。

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)

相关主题
文本预览
相关文档 最新文档