整理armlinux.docx

上传人:b****3 文档编号:4265481 上传时间:2022-11-28 格式:DOCX 页数:14 大小:267.39KB
下载 相关 举报
整理armlinux.docx_第1页
第1页 / 共14页
整理armlinux.docx_第2页
第2页 / 共14页
整理armlinux.docx_第3页
第3页 / 共14页
整理armlinux.docx_第4页
第4页 / 共14页
整理armlinux.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

整理armlinux.docx

《整理armlinux.docx》由会员分享,可在线阅读,更多相关《整理armlinux.docx(14页珍藏版)》请在冰豆网上搜索。

整理armlinux.docx

整理armlinux

1、Linux内核:

“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。

一个内核不是一套完整的操作系统。

一套基于Linux内核的完整操作系统叫作Linux操作系统,或是GNU/Linux

2、Linux目录结构:

3、Linux结构:

4、Linux存储管理:

5、Linux用户接口功能:

6、Linux组成:

进程管理、定时器、中断管理、内存管理、模块管理、虚拟文件系统接口、文件系统、设备驱动程序、进程间通信、网络管理、系统启动等操作系统功能的实现。

Linux内核的主要模块(或组件)分以下几个部分:

存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。

7、用qt如何连接数据库

连接mysql数据库

QSqlDatabasedb=QSqlDatabase:

:

addDatabase("QMYSQL");//使用mysql数据库驱动

db.setHostName("localhost");

db.setDatabaseName("exampledb");//数据库名称

db.setUserName("sa");//用户名

db.setPassword("1");//密码

boolok=db.open();//尝试连接数据库

if(ok)

{

QSqlQuerymyquery;

if(myquery.exec("select*fromemployeedb"))

{

intnum=0;

if(db.driver()->hasFeature(QSqlDriver:

:

QuerySize))

{

num=myquery.size();//如果支持结果影响的行数,那么直接记录下来

}

else

{

myquery.last();//否则定位到结果最后

num=myquery.at()+1;

}

//这里添加数据库的查询结果处理操作

}

else//如果查询失败

{

QSqlErrorerror=myquery.lastError();

}

}

else//打开数据库失败

{

}

8、安装内核源码两种形式:

(1)GNU zip#tarxzvflinux-x.y.z.tar.gz

(2)Bzip2#tarxvjflinux-x.y.z.tar.bz2

目录描述:

目录

描述

arch

特定体系结构的源码

cryto

CrytoAPI

Documentation

内核源码文档

Drivers

设备驱动程序

fs

VFS和各种文件系统

include

内核头文件

init

内核引导和初始化

ipc

进程间通信代码

kernel

调度子系统这样的核心子系统

lib

通用内核函数

mm

内存管理子系统与虚拟内存

net

网络子系统

scripts

编译内核所用的脚本

security

Linux的安全模块

sound

语音子系统

usr

早期用户代码(initramfs)

9、arch/arm/的目录

目录

说明

boot

平台相关的启动代码,一般包含head.S

configs

预定义了此体系结构平台下的配置文件

kernel

与体系结构相关的内核代码

lib

与体系结构相关的内核函数库

mm

与体系结构相关的内存管理部分代码

mach-xxx

与某款特定CPU的平台代码

10、include/asm的头文件目录

asm是一个symboliclink,因为众多的文件都需要包含asm-xxx/目录下的某个头文件,使用asm的链接之后,在不同的平台下指向不同的目录,这样,增加了软件的可移植性。

11、与平台无关的头文件一般放在linux这个目录下如linux/mtd/

Makefile

12、

13、Makefile的作用

决定编译哪些文件

1)顶层Makefile决定内核根目录下哪些子目录将被编进内核。

2)arch/$(ARCH)/Makefile决定arch/$(ARCH)目录下哪些文件、哪些目录将被编进内核。

3)各级子目录下的Makefile决定所在目录下哪些文件将被编进内核,哪些文件将被编成模块(即驱动程序),进入哪些子目录继续调用它们的Makefile。

怎样编译这些文件

全局的,适用于整个内核代码树;

局部的,仅适用于某个Makefile中的所有文件;

个体的,仅适用于某个文件

怎样连接这些文件,它们的顺序如何

(1)arch/arm/Makefile:

(2)顶层Makefile:

(3)顶层Makefile中,再往下看:

(4)顶层Makefile按照一定的顺序组织文件,根据连接脚本arc/$(ARCH)/kernel/vmlinux.lds生成内核映象文件vmlinux

14、Makefile的变量

obj–y用来定义哪些文件被编进(built-in)内核

obj-m用来定义哪些文件被编译成可加载模块(Loadablemodule)

lib-y用来定义哪些文件被编成库文件

obj-y、obj-m还可以用来指定要进入的下一层子目录

 

Kconfig

1、Kconfig文件基本要素:

config条目

(1)config出现的三种配置结果

(2)config变量类型:

(省略了前缀“CONFIG_”)

bool

tristate

string

hex

int

条件判断

“if〈expr〉”

“prompt”[“if”]

(3)条目格式

依赖关系:

“dependson”/“requires”

缺省值定义:

“default”[“if”]

选择选项:

“select”[“if”]

帮助信息:

“help”or“---help---”

2、Kconfig文件基本要素:

menu条目

menu条目用于生成菜单,格式如下:

3、Kconfig文件基本要素:

choice条目

choice条目将多个类似的配置选项组合在一起,供用户单选或多选,格式如下:

4、Kconfig文件基本要素:

comment条目

comment条目用于定义一些帮助信息,它在配置过程中出现在界面的第一行.并且这些帮助信息会出现在配置文件中(作为注释),格式如下:

5、Kconfig文件基本要素:

source条目

source条目用于读入另一个Kconfig文件,格式如下

“source”

source“net/Kconfig”

6、配置界面操作方法

配置界面中,以[*]、或[]开头的选项表示相应功能的文件被编译进内核中、被编译成一个模块,或者没有使用。

尖括号◇表示相应功能的文件可以被编译成模块。

按〈Y〉键选择将它编译进内核,按〈M〉键选择将它编译成模块,按键将不使用它。

也可以按空格键进行循环选择,例如:

Y→N→M→Y。

上/下方向键

空格键

6、编译内核的步骤

Step1:

拷贝config_n35为文件.config

#cpconfig_n35.config

Step2:

修改内核目录下的Makefile,修改CROSS_COMPILE?

=arm-linux-

Step3:

执行makemenuconfig,并保存,如果有问题,以root权限执行

#makemenuconfig

Step4:

编译内核

#makezImage

编译完成后,zImage放在/arch/arm/boot/zImage

 

Bootloader

1、Bootloader,为引导加载程序,是嵌入式系统加电后运行的第一段代码,相当于PC机的BIOS。

Bootloader的位置:

通常固化在硬件上的某个固态存储设备上,加电后自启动。

2、Bootloader功能:

初始化硬件设备、建立内存空间的映射图(有的CPU没有内存映射功能如 S3C44B0x),将系统的软、硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准备好正确的环境。

从最终用户的角度看,Bootloader的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载模式的区别。

3、几种发布的Bootloader

Bootloader是严重地依赖于硬件而实现的

Vivi:

适用于ARM9处理器。

RedBoot;即红帽(RedHat)嵌入式调试引导程序,是一种用于嵌入式系统的独立开放源代码引导/装载器

U-Boot:

是一款目前功能较为强大的开源Bootloader程序,它支持多种处理器平台,包括ARM、PowerPC、MIPS等

4、有两种不同的操作模式:

“启动加载”模式和“下载”模式

5、Bootloader启动过程

1、第一阶段

阶段1主要包含依赖于CPU体系结构及硬件设备的初始化等。

通常都用汇编语言来实现。

这个阶段的任务有5:

(1)、基本的硬件设备初始化

这是Bootloader一开始就执行的操作,其目的是为阶段2的执行、以及随后kernel的执行准备好一些基本的硬件环境。

它通常包括以下工作:

关闭处理器内部指令/数据cache等、关闭中断、关闭看门狗

配置PLL、配置内存、初始化各工作模式的堆栈、配置中断

拷贝RW段,初始化ZI段

(2)、为阶段2代码准备RAM空间

为了获得更快的执行速度,通常把阶段2的代码加载到RAM空间中来执行。

准备RAM空间考虑的因素:

阶段2代码大小、堆栈、页大小(4KB的倍数)、安排位置等。

(3)、拷贝阶段2代码到RAM空间

(4)、设置好堆栈

堆栈指针sp设置在1MB的RAM空间的最顶端(堆栈向下生长)。

(5)、跳转到阶段2的C程序入口点

2、第二阶段

阶段2通常用C语言来实现,以便实现更复杂的功能,也使程序有更好的可读性和可移植性。

这个阶段的主要任务有5:

(1)、初始化本阶段要使用到的硬件

至少初始化一个串口,以便和终端用户进行I/O输出信息等。

(2)、检测系统内存映射(memorymap)

所谓内存映射,就是指在整个物理地址空间中有哪些地址范围被分配用来作为系统的RAM单元。

为后面使用RAM、运行程序做好准备。

(3)、将kernel和根文件系统映像从flash读到RAM空间

(4)、为kernel设置启动参数

这是在调用内核之前应该做的准备工作。

Linux2.4.x以后的内核都期望以标记列表(taggedlist)的形式来传递启动参数。

启动参数标记列表方法:

以ATAG_CORE标记开始,以ATAG_NONE标记结束。

在嵌入式Linux系统中,通常需要由BootLoader设置的启动参数有:

ATAG_CORE、ATAG_MEM(内存映射)、ATAG_NONE等。

(5)、调用内核

Bootloader调用Linuxkernel的方法是直接跳转到内核的第一条指令处。

在跳转时必须满足下列条件:

1)、CPU寄存器的设置:

R0为0;R1为机器类型ID;R2为启动参数,标记列表在RAM中的起始基地址。

(机器类型参见linux/arch/arm/tools/mach-types目录)

2)、CPU模式:

CPU必须设置为SVC模式,必须禁止中断(IRQs和FIQs)。

3)、MMU和Cache的设置:

MMU必须关闭;指令Cache可以打开也可以关闭;数据Cache必须关闭。

ViVi

1、vivi有两种工作模式,一种是“启动加载”模式,另一种是命令行模式。

在vivi启动时,通过串行口发出如下信息:

PressReturntostarttheLinuxnow,

anyotherkeyforvivi

2、vivi源代码包含的目录有:

arch、Documentation、drivers、init、include、lib、scripts、test、util等10目录,共300多个文件。

3、vivi的接口命令有5条。

命令

功能

Load

下载flash或RAM命令

Part

MTD分区操作命令

param

设置、查看参数命令

Boot

启动系统命令

flash

Flash管理命令

(1)、load---下载文件命令

功能:

将二进制文件下载到Flash或RAM

格式:

load

[|]

media_type:

存储器类型,Flash或RAM

partname:

分区名称

addrsize:

下载的地址及占用空间大小

x|y|z:

文件的传输协议。

x表示采用xmodem协议,y表示采用ymodem协议,z表示采用zmodem协议。

目前vivi仅支持xmodem协议。

例1:

vivi>loadflashkernelx

表示下载压缩的内核映像文件zImage到flash存储器的内核分区中,采用xmodem传输协议。

(2)、part---MTD分区操作命令

操作命令:

显示、增加、删除、复位、保存MTD分区等。

各个命令格式:

partshow:

显示分区信息

partdel

删除指定的分区

partreset:

恢复分区的默认值

partsave:

在flash中保存分区和参数值

增加新的分区

partadd

partname:

新分区名称

offset:

新分区的偏移地址

size:

新分区的大小

flag:

新分区的类型,可以是JFFS2、BONFS

(3)、param---设置或查看分区参数命令

⏹查看分区参数:

paramshow

⏹设置启动等待按键延迟:

paramsetboot_delayn(μs)

⏹设置通信初始化超时:

paramsetxmodem_initial_timeoutm(μs)

(4)、boot---引导内核命令

格式:

boot[media_type][|]

media_type:

存储器类型,flash或RAM

partname:

内核所在分区名称

addr:

内核所在器件的偏移地址

size:

内核的大小

若boot(无参数),则从kernel内核对应的分区中(kernel)读取内核映像启动。

例如:

1、vivi>bootnand0x80000

内核在nandflash中,偏移地址为0x80000,大小为缺省值0xc0000

(5)、flash---flash存储器管理命令

擦除flash数据格式:

flasherase[|]

说明:

对flash只有擦除命令。

例如:

flasherase0x800000xc0000

4、vivi的移植方法步骤:

对vivi进行修改移植

对vivi进行配置

对vivi进行编译

下载、运行vivi

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 信息与通信

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1