嵌入式linux
嵌入式开发
1.1开发板和宿主机的连接方法:
cable 电缆
可以通过 串口 网络 以及 JTGA等连接方式。
JTAG:
国际标准测试协议
对芯片内部测试对flash烧写。注意JTAG 是一种协议,具体去实现这个协议时靠的就是下面的工具
JTAG连接-并口笔记本想要用并口就用PCMCIA并口转接卡。
JTAG连接-usb usbJTAG调试器(Jlink)
同时要想使用这个连接工具就必须安装驱动。
1.2 开发板系统安装
1.2.1开发板上面有俩快flash ,首先我们用Jlink连接,然后我们将flash擦除
然后我们烧入bootloader 【引导装载】相当于计算机的bios
安装dnw工具,usb驱动,同时有配套的dnw软件主要用于下面的系统安装加载传输文件
1.2.2 linux系统的安装
a.分区
b.安装bootloader
c.安装linux内核
d.安装文件系统
1.2.3 wince 安装
a.安装wince的bootloader
b.安装bootlogo
c.安装wincea镜像
最后总结:大致过程是首先向开发板烧入一个bootloader到flash,然后在这个bootloader的引导下去安装其他的操作系统到另一块flash
1.2.4 裸机程序体验
在不安装系统的条件下体验程序。
2.1 linux 系统定制安装
虚拟机安装linux ,使用的是vmware
vm版本可以看help
选择一些软件。
Linux 的目录结构
/bin 存放常用命令
/boot 存放启动程序
/dev 存放设备文件
/etc 存放启动,关闭,配置程序与文件
/home 用户工作根目录
/lib 存放共享链接库
/root 超级用户工作目录
/sbin 系统管理员的常用管理程序
/tmp 存放临时文件
/lost+found 系统异常时,用于保存部分资料。
linux 命令 常用的命令也就20多个
1.登录的时候输入用户名 密码
用户的信息放在/etc/passwd里面放有用户的信息。
而用户的密码真正放到了/etc/shadow(阴影)
在passwd里面
第一个字段:用户名称、
第二个字段:密码标志(如果是x,表示有密码且密码在shadow里)
第三个字段:UID
0: 超级用户
1-499: 系统用户
500-65535:普通用户
第四个字段:组id
用户一旦建立就会自动建一个组
第六个字段:在普通用户:/home/用户名/
超级用户:/root/
第七个字段:shell(命令解释器 )登录后的shell
一切详细的帮助信息在man手册。
操作方法是:man 5 passwd
2.linux下面的用户有俩类用户,超级用户 root ,超级用户的提示符是# 而普通用户是$.
3.图形化界面和命令界面的切换 可以用 ALT+CTRL +F1 或者F7
3.linux系统添加用户
useradd 【选项】用户名
修改密码
passwd 用户名 然后提示输入密码
切换用户
su 【选项】 用户名
关机
shutdown -t +时间
shutdown now 立刻关机
cp 拷贝命令
1.cp【选项】源文件、目录[空格]目标文件、目录
2.cp-r 拷贝目录的时候一定要加 -r
mv 剪切
基本和cp一样 剪切目录不需要加 -r
更改文件名 也用mv
mv 1.txt 2.txt 更改1.txt 为2.txt
rm 删除文件
rm -f 不提示删除force 强制
rm dir -r 删除目录
rm dir -r -f 不提示删除
mkdir 创建目录
cd 目录名
cd - 回到刚才来的目录
pwd 显示当前在哪个目录
ls显示
tar打包不等于压缩
打包是将文件或者目录打成一个文件
1.tar cvf tmp.tar/home/tmp
将home/tmp目录下的所有文件和目录打包为tmp.tar
chmod 777 改变权限
运行程序 ./ 程序名
2.2 vi的使用
vi有三种工作模式
命令行工作模式
插入模式
底行模式
gcc 全称(gnu c compiler)非常优秀的编译器。
四个阶段
2.3linux系统管理
tftp服务器
tftp服务器是什么
嵌入式开发中有宿主机和目标机
理解即可
宿主机是嵌入式开发过程中软件的开发,编译实用的pc是宿主机,而真正执行嵌入式程序的硬件平台是目标机
Tftp服务器是工作于宿主机上的软件,主要提供对目标机的主要映像文件的下载工作。
2.3.1tftp服务器-安装
使用RPM包安装tftp-server
1.如果利用如下命令能够看到服务已启动。则不用安装
2.3.2nfs 网络文件系统(network file system)相当于windows的共享目录
2.3.3samba (shangba)
linux与linux系统自己的共享是通过nfs,windows与windows之间通过共享目录实现共享 ,那么linux与windows之间共享是通过什么那?——就是Samba
系统设置
set up
前面有星号表示会随着系统启动
2.3.4wireshark
(2006年之前叫Ethereal)
可以在linux和windows上使用的开源网络协议分析器
wireshark 包的安装
运行wireshark 可以在控制台里面直接输入wireshark
3.1shell编程
什么是shell shell是命令解析器。
shell脚本是什么那?
shell脚本相当于windows的批处理shell脚本包含了一系列的文本文件。运行脚本文件中包含的命令将会得到执行。shell脚本的运行是sh hello.sh
shell脚本的格式
#!/bin/sh 指定命令解析器、
shell脚本编程 注释以#开头
shell中的变量无类型,并且也无需声明而且所有变量是由字符串组成
#!/bin/sh
#set variable a
a="hello world"
# print a
echo "A is:"
echo $a
运行结果
A is hello word
# 第二个例子
num=2
echo"this is the $numnd"
运行结果是
this is the
shell 脚本把numnd当作变量,但是没有这个变量
如果想输出this is the 2nd
可以这样写
num=2
echo "this is the${num}nd"
显示this is the 2nd
当前后都有字符串的时候,记得加{}来区分变量。
例子3
默认变量(记住特点是变量)
$#:传入脚本的命令行参数个数
$*:所有命令行参数值,在各个参数值之间留有空格
$0:命令本身(shell文件名)
$1:第一个命令行参数
$2:第二个命令行参数
//记住,这是传入参数,也就是输入参数,相当于C语言的scanf输入参数。
例子3
#!/bin/sh
echo"number of vars:"$# 结果4
echo"values of vars:"$* 结果1 2 3 4
echo"values of var1:"$0 结果 s3
echo"values of var2:"$1 结果 1 对应第一个参数
echo"values of var3:"$3 结果 3 对应输入的第三个参数
运行 ./s3 1 2 3 4
局部变量
C语言中位于函数内部的变量是局部变量
变量首次赋值时加上local关键字就可以声明一个局部变量
#!/bin/bash
hello="var1"
echo $hello
function fun1{
local hello="var2"//局部变量
echo $hello
}
func1
echo $hello
var1 var2 var1
#!/bin/bash
hello="var1"
echo $hello
function fun1{
hello="var2"//仍是全局变量
echo $hello
}
func1
echo $hello
var1 var2 var2
区别C语言,C语言中只要是函数内就是局部变量,而这里不是。
变量赋值 “=”
1.注意在shell脚本编程的时候等号左右两边不能有空格。
2.BASH中的语句结尾不需要分号。
if语句
if[条件]
then
语句
fi
或者
if[条件]
then
语句
else
语句
fi
或者
if[条件]
then
语句
else if[条件]
then
语句
else
语句
fi
fi
比较
比较操作 整数操作 字符串操作
相同 -eq =
不同 -ne !=
大于 -gt >
小于 -lt <
大于或等于 -ge
小于或等于 -le
为空 -z
不为空 -n
<!-- UY BEGIN -->
<div id="uyan_frame"></div>
<script type="text/javascript" src="http://v2.uyan.cc/code/uyan.js?uid=1910227"></script>
<!-- UY END -->