嵌入式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 -->
嵌入式linux的更多相关文章
- 嵌入式 Linux下永久生效环境变量bashrc
嵌入式 Linux下永久生效环境变量bashrc 1) .bashrc文件 在linux系统普通用户目录(cd /home/xxx)或root用户目录(cd /root)下,用指令ls -al可以看到 ...
- 制作自己的嵌入式Linux电脑_转
制作自己的嵌入式Linux电脑 http://os.51cto.com/art/201409/450334.htm 原文链接:http://blog.jobbole.com/75414/ 包含器件选择 ...
- 用Windows+VirtualBox搭建嵌入式Linux开发环境
Windows+VirtualBox的嵌入式Linux开发环境的搭建 最近一直在学习Linux的设备驱动编写,一直是在物理机上安装的Ubuntu进行的,但是在Ubuntu12.04的系统中,已经不能用 ...
- 嵌入式Linux的调试技术
本节我们研究嵌入式Linux的调试技术,对于复杂的Linux驱动及HAL等程序库,需要使用各种方法对其进行调试.刚开始讲了打印内核调试信息:printk,这个函数的用法与printf函数类似,只不过p ...
- 嵌入式linux应用程序移植方法总结
嵌入式linux应用程序移植方法总结 前段时间一直在做openCapwap的移植和调试工作,现在工作已接近尾声,编写本文档对前段工作进行一个总结,分享下openCapwap移植过程中的经验和感悟.江浩 ...
- 驱动开发学习笔记. 0.06 嵌入式linux视频开发之预备知识
驱动开发读书笔记. 0.06 嵌入式linux视频开发之预备知识 由于毕业设计选择了嵌入式linux视频开发相关的项目,于是找了相关的资料,下面是一下预备知识 UVC : UVC,全称为:USB v ...
- 嵌入式linux开发环境构建
2.1硬件环境构建 2.1.1主机与目标板结合的交叉开发模式 在主机上编辑.编译软件,然后再目标办上运行.验证程序. 对于S3C2440.S3C2410开发板,进行嵌入式Linux开发时一般可以分为以 ...
- 嵌入式Linux驱动开发日记
嵌入式Linux驱动开发日记 主机硬件环境 开发机:虚拟机Ubuntu12.04 内存: 1G 硬盘:80GB 目标板硬件环境 CPU: SP5V210 (开发板:QT210) SDRAM: 512M ...
- 嵌入式Linux开发板
嵌入式Linux开发板开发介绍: iTOP-4412嵌入式Linux开发板搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,独家配备三星S5M8767电源管理,配备Andro ...
- 嵌入式Linux 修改启动LOGO
1.嵌入式 Linux LOGO显示原理 嵌入式Linux是直接在FrameBuffer的基础上.直接显示一个ppm格式的图象. 它 kernel/drivers/video/fbc ...
随机推荐
- HDU 5000 Clone(离散数学+DP)(2014 ACM/ICPC Asia Regional Anshan Online)
Problem Description After eating food from Chernobyl, DRD got a super power: he could clone himself ...
- 多屏复杂动画CSS技巧三则(转载)
本文转载自: 经验分享:多屏复杂动画CSS技巧三则
- oracle的用户
1:创建用户 create user zhaoyb identified by zhaoyb default tablespace HUAPUSALEDB create user 用户名 identi ...
- 13.熟悉JDK的配置,环境变量
已经做烂的东西,公司的新人环境配置手册文档Java方面的就是我写的,有意的留邮箱,很详细
- 夺命雷公狗ThinkPHP项目之----企业网站13之文章列表页的实现(主要是分页的实现)
列表页这个其实是比较简单的一个,直接遍历除数据即可: public function lists(){ //$mod = M("Article")->select(); // ...
- z/os上的tar和gzip(2)
前一篇文章写过了如何合成并压缩大批量文件,这篇文章解释一下如何在拿到压缩文件后如何解压并还原大批量文件. 解压缩的JCL很简单,如下所示,和压缩的JCL类似,只要把参数改成UNPACK,然后设置一 ...
- jiffies溢出与时间先后比较-time_after,time_before【转】
转自:http://www.cnblogs.com/hfyinsdu/p/4600052.html 参考地址: http://blog.csdn.net/jk110333/article/detail ...
- 表数据文件DBF的读取和写入操作
import sys import csv import struct import datetime import decimal import itertools from cStringIO i ...
- DOS下如何同时显示时区日期和时间
DOS下如何同时显示时区日期和时间 Echo %Date:~0,4%-%Date:~5,2%-%Date:~8,2% %Time:~0,2%:%Time:~3,2% 不显示周几 Echo %Date: ...
- jQuery extend() & jQuery.fn.extend(),插件编写
资料来源:网上资料整理并自行改编测试.复制以下代码并依赖jquery.js,jquery.validate.js即可执行.有误之处,请@我啊,敬请赐教. <!DOCTYPE html PUBLI ...