(内核make menuconfig之后,通过insmod安装的驱动都应该重新make,可能会出现一些莫名的问题)
(nor flash/SDRAM/DM9000都受内存控制器控制,需要配置内存控制器对应的位宽,表示一次能取得多少字节数据;norflash在接开发板时,地址线错开一位的原因就是因为当读0地址时,nor返回一个2字节数据,当读0x02地址时,因为2440的地址1号线接nor的地址0号线,相当于0x02右移一位,nor返回一个2字节数据;对2440来说一个地址表示一个字节,nor一个地址表示二个字节)
1、修改 /etc/inittab
加入
tty1::askfirst:-/bin/sh
可以让tty1成为标准输入、输出、和错误;输入是keyboard、输出是lcd
tty1和fb关联起来是在fbcon.c这个驱动程序中,通过获得registered_fb[]数组中的fb_info结构体,其在lcd驱动程序中设置,有显存等地址信息,然后去帮我们得到字模或者图片等信息并显示
,tty1和按键关联起来是在keyboard.c中(这是输入子系统)
tty来简称各种类型的终端设备
linux系统中包含如下几类终端设备:
(1)串行端口终端(/dev/ttySn)
也就是你所问的串口。
(2)伪终端(/dev/pty)
如telnet,ssh等
(3)控制台终端(/dev/ttyn,/dev/console)
如计算机显示器等
2、uboot指令
nfs下载指令:nfs 30000000 192.168.1.5:/work/nfs_root/uImage (IP地址是虚拟机地址,用其中下载uImage,并下载到nandflash 30000000地址)
bootm 30000000 从30000000地址处运行
mount -t nfs -o nolcok,vers=2 192.168.1.5:/work/nfs_root /mnt 挂接/work/nfs_root/uImage目录到/mnt(可以通过访问/mnt文件来访问虚拟机中/work/nfs_root目录)
3、make menuconfig之后,找到某个驱动对应的选项后,查看这一项或者通过搜索找这一项,可以看到CONFIG******的一行内容,在内核的makefile中查找可以找到“obj-$(CONFIG_MTD_NAND_DENALI) += denali.o”其中的.o文件就是对应的驱动
4、linux常用命令
001节_linux命令入门演示
前面我们讲解了在Ubuntu图形界面下怎么新建目录、新建文件等等。
提个问题:除了这个图形界面,Ubuntu下面有没有其它的方式也可以创建目录、创建文件呢?
我们回到比较熟悉的Windows界面,或许大家听说过dos命令行工具,没有听说过也没关系,同时按下“Windows键”和“R键”,输入cmd,再点击“确定”,就出现了命令工具。
打开之后,默认进入计算机用户目录,在该目录输入dir,可以显示目录和文件名。
执行md 123,在资源管理器可以看到创建了“123”文件夹。
执行rd 123, 就删除了“123”文件夹。
输入cls,即可清除屏幕显示信息。
这里演示的dir、md、rd、cls命令,都是这个命令行所支持的命令。他们可以实现创建目录、删除目录、清屏等操作。
回到前面提的问题:除了图形界面,Ubuntu下面有没有其它的方式也可以创建目录、创建文件呢?
答案是有的,通过Linux命令。
下面,我先给大家演示一下Linux命令,大家先看着我如何操作,在后续视频中我会详细的讲解Linux命令如何快速记忆和掌握。
现在我们只是来演示一下,在这里强烈建议,不要做笔记,也不要记忆。
在Ubuntu下,我们通过文件搜索器,输入terminal,即可找到终端,或者使用快捷键:Ctrl + Alt + T也可打开终端。Linux命令是每一个Linux学习者必须掌握的基础知识,入门阶段掌握常用的一些命令即可。
演示中使用的命令:
pwd //显示当前所在的目录
ls //显示当前目录下的文件
cd //切换路径
cd .. //返回上一级路径
mkdir //新建目录
rmdir //删除目录
touch //新建文件
cp //复制文件
rm //删除文件
cat //将文件内容显示到终端中
clear //清除屏幕的显示内容
002节_shell命令解析器功能说明
在Shell中输入字符串并回车的过程:
1.Shell根据第一个字符串去环境变量PATH所指定的目录中找到同名的应用程序;
2.然后执行它;
我们可以通过设置PATH环境变量来添加我们的目录:
export PATH=$PATH:/my/dir
比如编译程序有时会出现command not found的原因:
1.PATH所指定的目录中无此程序;
2.它不是可执行的程序;
003节_linux命令提示符和linux命令格式
这节课我们正式学习Linux命令,只有掌握了Linux基础命令,我们才能成功迈入Linux的世界。
前面演示过一些Linux命令,这些Linux命令非常基础,每个同学都必须掌握。我们重新来讲解,并且补充一些Linux相关的基础知识。
Linux的命令提示符
使用快捷键:Ctrl + Alt + T打开终端,打开终端之后,可以看到它已经显示了一串字符,这一串就是命令提示符。
命令提示符表明了当前终端的状态,这一串的含义如图:
首先book表示当前登陆的用户名,因为Linux是一个多用户的操作系统,所以说指明一下当前是哪一个用户名登陆的。
接下来是一个@,它是一个连接符,连接前后。
接着的www.100ask.org是一个主机名,如果大家没有使用我们百问网提供的Ubuntu环境的话,这主机名可能不同,但没有关系。
再接着是一个:它也是一个连接符,连接前后。再接着是一个~,它是一个目录,表明了book这用户的家目录/home/book,在后面我们会说明。
再接着是一个$,因为book是一个普通用户,普通用户显示$,如果book是一个root(超级)用户,就会显示#。这个root用户在后面会说明。
因此我们需要记住两点,命令提示符,显示了:
1.当前登陆的用户名
2.用户当前所在的路径
Linux命令的格式
命令 [选项][参数]
在一些参考书里,是以英文写的,它们是一个意思。
举例:
如果我们只需要查看当前路径的文件内容:ls
如果我们想查看当前路径下文件的创建时间和大小等详细内容:ls -l
如果我们想查看非当前路径下的内容,比如/home这个路径下的内容:ls -l /home
可以发现:
1.命令这一部分肯定是存在的
2.选项和参数不一定存在,可有可无;选项和参数取决于里使用该命令实现的具体目的;
3.选项是以“-”来指明的;
4.命令、选项、参数之间以空格隔开(一个或多个空格都视为是一个空格);
5.完成命令输入后,按下“enter键”,即可执行命令;
如ls有个-l选项,可能有的同学会问,那么ls到底有那些选项了?可以通过man ls来查看。
ls命令的选项有很多,入门阶段先掌握ls命令的-l、-a、-h等常用选项。
在后面的视频中,也是先介绍Linux基础命令(pwd、cd、ls等)的常用选项。
入门阶段,掌握一些常用的选项就可以了,不要贪多。
004节_linux常用命令引入
前面演示过这些命令,这节课开始重新来讲解,在讲解的过程中,我将告诉大家我自己的记忆方法,我相信这些记忆方法,可以帮助大家快速的掌握这些命令。言归正传,这里有几个单词:
序号 |
英语单词 |
含义 |
1 |
directory |
目录 |
2 |
change |
改变 |
3 |
list |
列出 |
4 |
|
打印 |
5 |
remove |
删除 |
6 |
copy |
复制 |
7 |
move |
移动 |
8 |
clear |
清除 |
非常简单,我相信每个同学都能掌握。好了,等下的记忆方法,就是这些单词的组合。
005节pwd命令_独家记忆方法
最简单的是pwd这个命令,我参考了国内很多讲解Linux命令的视频,其实很多老师讲解这个命令的时候,都讲解得不是很完善,他们只是告诉你怎么用,但是他没告诉你怎么记,它的来源是什么。
我这里讲解一下它的来源,它是print workingdirectory,这三个单词的首写字母的组合。这三个单词的中文意思就是“打印当前工作路径”。我相信你只要掌握这三个单词的含义,你就能清楚的记住pwd这个命令,这样的话,你就知根知底了。
在前面讲过,Linux命令格式是由命令、选项、参数。这三个部分来构成的。在日常工作和学习中,只需要掌握命令部分为pwd就可以了,至于其它的选项、参数可以不用掌握。
pwd //打印当前所在的路径
006节cd命令讲解1_独家记忆方法
接着是cd命令,cd命令来源是change directory这两单词的首写字母组合。这意思是“切换路径”。一般情况下,cd命令都不需要加参数,只需要加上,需要切换的目标目录就行了。
cd //切换路径
演示过程中,每次都需要输入很多,是不是有时可以简化输入呢?答案是可以的。一般简化输入有这三种情况:
cd ~ //切换到家目录
cd ..//切换到上一级目录
cd -//切换到上一次所在目录
007节linux基础知识_家目录_当前路径
第一个概念是家目录,比如book用户的家目录是/home/book。
这是前面讲解过的Ubuntu结构,当你在Ubuntu下面新建一个book用户后,它会在/home目录下新建一个book目录。
/home/book目录来存放book用户自己的一些文件。
同理,你在Ubuntu下面新建guest用户的话,它也会在/home下面guest这个目录。/home/guest来存放guest用户,它自己的一些文件。
Linux中用~符号来表示用户的家目录。因此在Linux中输入cd ~即可进入家目录。
下面都是一些Linux的基础概念,我们先补充一下。
008节linux基础知识_上一个路径_上一次路径
· 第二个概念是当前路径和上一级路径。
Linux中用.符号来表示当前目录,用..符号来表示上一级目录。
009节_linux基础知识__linux目录结构介绍
Linux目录结构
参考前面
010节linux基础知识_绝对路径和相对路径
第三个概念是绝对路径和相对路径
绝对路径:从根目录一级级找下去,需要写完整路径名
相对路径:参照当前所在目录进行查找
举例:
1) 当前路径为/bin,然后./pwd就是执行了/bin/pwd
2) 当前路径为/home/book/100ask,然后cd ../Videos/就到达/home/book/Videos,cd ../..就到达/home
绝对路径是从根目录开始;
相对路径一般以.和..来构成;
011节cd命令讲解2注意事项
注意事项:
1.切换的路径必须保证存在,可以使用命令来查看某一个路径下的所有内容。
2.一定要记得多使用tab键,让终端为你自动补全。
你切换的路径必须保证存在,如果路径都不存在,肯定切换不了。这相当于什么呢。
你们班上有30个学生,学号是1-30号,老师叫了31号,肯定没人应答嘛。
因此,建议切换路径前,使用命令来先查看下有没有这个路径,命令,后面会讲。
tab键可以减少我们的输入,提高效率,我见过很多初学者,每次输入的时候都输入完整的文件名或者路径名,效率很低下。所以,记得多使用tab键。
012节ls命令_独家记忆方法
接下来,我们讲解ls命令。
ls命令的来源是英文单词list。学过数据结构的同学知道,list表示链表,不过在这里,list是个动词,表示列举、列出。ls的功能是列出目录内容。
ls //列出目录内容
前面我们刚刚讲过cd命令,cd命令是切换路径。
一般的话,都是用cd切换路径,然后再使用ls来查看目录内容。
在前面讲过,Linux的命令组成是:
命令 [选项][参数]
其中选项,参数可有可无。
举例:
1) ls
ls //则显示当前所在目录的内容
2)ls 目录名
ls /home //则指定显示/home的内容
ls ~ //则指定显示/home/book的内容
3)ls 选项 或 ls 选项 目录名
常用的选项:
-l(long的缩写),显示目录下文件的更详细的信息(文件权限、文件最后修改时间、文件大小);
-a(all的缩写),显示了隐藏文件;
-h(human-able的缩写),将文件大小以K(KB)、M(MB)、G(GB)来表示;
ls -lh的详细的信息含义:
013节目录操作mkdir和rmdir独家记忆方法
下面我们讲解mkdir这个命令。mkdir来源于make directory
目录的操作
· mkdir:创建目录
举例:
1)mkdir 目录名
mkdir dir0 //创建了dir目录
2)mkdir -p 父目录/子目录
mkdir -p dir1/dir2//连续创建多级目录(父目录和子目录),如果父目录不存在,则需要加入-p参数。-p(parents的缩写)
· rmdir :删除目录
举例:
1) rmdir 目录名
rmdir dir0//删除dir0这个没有内容的空目录
注意:rmdir不能删除非空目录(非空目录:该目录下面有子目录或者文件)
2)rm -f 目录名
rm -f dir0 //删除dir0这个目录
注意:可以删除非空目录
014节_文件操作touch_mv_cp_rm
文件的操作
· touch :用来新建文件
举例:
1) touch 文件名
touch file1 //在当前目录新建名为file1的文件
注意:
1)同一目录无法创建同名的文件
2)linux的文件名是区分大小写的,如file1和File1是不同文件。这一点跟windows不同。
· mv(move的缩写) :用来修改文件(目录)名、移动路径
举例:
1) mv 旧文件名 新文件名 修改文件名
mv file1 filea //将当前目录的文件file1改名为filea
2)mv 旧目录名 新目录名 修改目录名
mv dir1 dira //将当前目录下的目录dir1改为dira
3)mv 文件名目录名 移动路径
mv filea dira //将当前目录下filea移动到dira子目录
mv filea ~ //将当前目录下filea移动家目录
mv ~/filea ..//将家目录下的fila移动到上一个路径
· cp(copy的缩写) : 用来复制文件(目录)
1)cp 源文件名 目标文件名
cp File1 file2//将当前目录下的文件File1拷贝成file2
2)cp 源文件名 目标目录名
cp file2 dira///将当前目录下的文件file2拷贝到dira子目录
2)cp 源目录名 目标目录名
cp -r dira dirb//复制dira目录下的所有内容到dirb,其中,-r参数时递归复制
cp -i file2 dira//如果dira目录下面有同名的file2,加入-i参数就会要求你确认是否覆盖同名的文件
注意:cp的常用参数有:-i,-r,-f,-d等,在后面讲解了linux权限之后,我们会加深cp命令的讲解。
· rm(remove的缩写) :删除文件(目录)
常用命令格式:
rm [选项] [文件名 | 目录名]
常用选项:
-i(interactive(交互)的缩写), 删除文件(目录)之前,要求你确认是否同意删除
-r(recursive(递归)的缩写), 递归删除指定目录下的子目录和文件
-f(force(强制)的缩写), 强制删除
举例:
注意:
1)删除文件(目录)前,确定该文件(目录)是否可以被删除。
2)rm的常用参数有:-i,-r,-f等,在后面讲解了linux权限之后,我们会加深rm这个命令的讲解。
015节_文件查看和编辑cat_gedit
文件的查看和编辑:
1)cat用来查看文件内容
常用命令格式:
cat 文件名
举例:
cat file1 将file1的内容打印到标准输出中(默认标准标准输出指向终端)
cat file1 file2 将file1和file2的内容串联并依次全部打印到标准输出中
cat -n file1 显示内容并在内容前显示行号。
类似的查看命令: more、less、head、tail等后面讲解
2)gedit 图形应用程序的编辑器
这个前面讲过了,就不再重复了
3)vi 编辑器
vi编辑器非常重要,在后面的视频,以专题的形式专门讲解。
016节_清除屏幕_clear和reset
清除屏幕命令:
clear:刷新屏幕,保留历史命令操作记录
说明:此命令本质上只是让终端向后翻一页,当向上滚动鼠标时,还是可以看到之前命令的操作记录
也可使用快捷键“Ctrl”+“L”。
reset:重新初始化屏幕,清除历史命令操作记录
017节_帮助信息man_info_help
帮助信息:
学习Linux最麻烦的是什么?
不停的上网或者翻阅书籍查找linux命令、相关函数的用法。
其实,没那么麻烦,linux发行版(如ubuntu)自带帮助命令。
Linux系统中提供了三种帮助方式。
man和info是独立的命令, --help是个命令的参数,
它们都是Linux中获取帮助信息最权威,最快捷的途径。
1)man使用的最多
举例:
注意:
man手册的9册内容的侧重点,最好记一下。
section |
名称 |
说明 |
1 |
可执行程序或shell命令 |
用户可操作的命令 |
2 |
系统调用 |
内核提供的函数(查头文件) |
3 |
库调用 |
常用的函数库 |
4 |
特殊文件 |
在/dev下的设备文件 |
5 |
文件格式和约定 |
对一些文件进行解释,如/etc/passpd |
6 |
游戏程序 |
游戏程序 |
7 |
杂项 |
包括宏包和约定等 |
8 |
系统管理员使用的管理命令 |
通常只有系统管理员root可以使用 |
9 |
内核相关 |
Linux内核相关文件 |
2)info
举例:
info ls //查看ls的帮助信息
3)–help
举例:
ls --help //查看ls的帮助信息
5、linux进阶指令
第001节_ find查找文本
我们在Windows中搜索文件,一般查找文件需要传入两个条件:
1)在那些目录中查找;
2)查找的内容;
在Linux中,查找文件的也需要这两个条件,不同于Windows使用搜索框查找,Linux中使用 find 命令查找文件。
find 命令:
*目的:查找符合条件的文件
*格式: find 目录名 选项 查找条件
举例1:
find /work/001_linux_basic/dira/ -name "test1.txt"
说明:
a)/work/001_linux_basic/dira/
指明了查找的路径
b)-name
表明以名字来查找文件
c)"test1.txt"
指明查找名为test1.txt的文件
举例2:
find /work/001_linux_basic/dira/ -name "*.txt"
说明:
a)查找指定目录下面所以以.txt结尾的文件,其中*是通配符。
举例3:
find /work/001_linux_basic -name "dira"
说明:
a)查找指定目录下面是否存在dira目录,dira是目录名。
注意:
1)如果没有指定查找目录,则为当前目录。
find . -name "*.txt"
其中.
代表当前路径
find -name "*.txt"
没加路径,默认是当前路径下查找
2)find还有一些高级的用法,如查找最近几天(几个小时)之内(之前)有变动的文件
find /home -mtime -2
查找/home目录下两天内有变动的文件
第002节__grep查找字符串
grep 命令:
目的:使用grep命令来查找文件中符合条件的字符串
格式:
grep [
选项
] [
查找模式
] [
文件名
]
假设dira目录的test1.txt 和 dirb目录的test1.txt都含有如下内容:
aaa
AAAAAA
abc
abcabcabc
cbacbacba
match_pattern
nand->erase
通过查找字符串,希望显示如下内容:
· 所在的文件名—-grep查找时默认已经显示目标文件名
· 所在的行号——使用-n选项
可以使用以下命令:
grep -rn “字符串” 文件名
r
(recursive):递归查找
n
(number):显示目标位置的行号
字符串: 要查找的字符串
文件名: 要查找的目标文件,如果是*则表示查找当前目录下的所有文件和目录
举例:
grep -n "abc" test1.txt
在test1.txt中查找字符串abc
grep -rn "abc" *
在当前目录递归查找字符串abc
注意:
1)可以加入-w全字匹配。
第003节__file查看文件类型
file 命令:
· 目的:识别文件类型
· 格式: file 文件名
在Linux中有一个非常重要的观点:”’Linux下一切皆文件”’。
举例:
file ~/.bashrc
为
ASCII
编码的
text
类型
file ~/.vimrc
为
UTF-8 Unicode
编码的
text
类型
file ~/Pictures/*
如图形文件
JPEG/PNG/BMP
格式
file ~/100ask/
为
directory
表明这是一个目录
file /bin/pwd
出现
ELF 64-bit LSB executable
,即为
ELF
格式的可执行文件
file /dev/*
出现
character special(
字符设备文件
)
、
block special(
块设备文件
)
等
第004节_ which和whereis查看命令所在位置
which 和 whereis 命令:
*目的:查找命令或应用程序的所在位置
*格式:which 命令名/应用程序名
在终端上执行pwd
实际上是去执行了/bin/pwd
举例:
which pwd 定位到/bin/pwd
which gcc 定位到/usr/bin/gcc
whereis pwd 查找到可执行程序的位置/bin/pwd和手册页的位置/usr/share/man/man1/pwd.1.gz
第005节__gzip和bzip2单个文件的压缩和解压
· 压缩的目的:
在网络传递文件时,可以先将文件压缩,然后传递压缩后的文件,从而减少网络带宽。接受者接受文件后,解压即可。
· 压缩的类型
有损压缩、无损压缩:
a)有损压缩:如mp4视频文件,即使压缩过程中,减少了很多帧的数据,对观看者而言,也没有影响。当然mp3音乐文件也是有损压缩。 b)无损压缩:如普通文件的压缩,为了保证信息的正确传递,不希望文件经过压缩或解压后,出现问题。后面讲解的都是无损压缩。
Linux下常用的压缩命令##
· 单个文件的压缩(解压)使用gzip和bzip2
· 多个文件和目录使用tar
gzip的常用选项:
-l(list) 列出压缩文件的内容
-k(keep) 在压缩或解压时,保留输入文件。
-d(decompress) 将压缩文件进行解压缩
1)查看
gzip -l
压缩文件名
比如:
gzip -l pwd.1.gz
2)解压
gzip -kd
压缩文件名
比如:
gzip -kd pwd.1.gz
该压缩文件是以
.gz
结尾的单个文件
3)压缩
gzip -k
源文件名
比如:
gzip -k mypwd.1
得到一个
.gz
结尾的压缩文件
注意:
1)如果gzip不加任何选项,此时为压缩,压缩完该文件会生成后缀为.gz的压缩文件, 并删除原有的文件,所以说,推荐使用gzip -k压缩源文件。
2)相同的文件内容,如果文件名不同,压缩后的大小也不同。
3)gzip只能压缩单个文件,不能压缩目录。
提示:
man pwd
会解压/usr/share/man/man1/pwd.1.gz
这个文件,
然后读取该文件中固定的格式的一些信息,然后显示到终端中。
· bzip2来压缩单个文件
bzip2的常用选项:
-k(keep) 在压缩或解压时,保留输入文件。
-d(decompress) 将压缩文件进行解压缩
1)压缩
bzip2 -k 源文件名
比如:
bzip2 -k mypwd.1
得到一个
.bz2
后缀的压缩文件
2)解压
bzip2 -kd
压缩文件名
比如:
bzip2 -kd mypwd.1.bz2
注意:
1)如果bzip2不加任何选项,此时为压缩,压缩完该文件会生成后缀为.bz2的压缩文件, 并删除原有的文件,所以说,推荐使用bzip2 -k
来压缩源文件。
2)bzip2只能压缩单个文件,不能压缩目录。
*单个文件的压缩使用gzip或bzip2
压缩有两个参数:
1)压缩时间
2)压缩比
一般情况下,”’小文件使用gzip来压缩,大文件使用bzip2来压缩”’。
比如:
mypwd.1源大小是1477字节,
gzip压缩后mypwd.1.gz是877字节,
bzip2压缩后mypwd.1.bz2是939字节。
myls.1源文件大小7664字节,
gzip压缩后myls.1.gz是3144字节,
bzip2压缩后myls.1.bz2是3070字节。
gzip、bizp2只能对一个文件进行压缩,而不能对多个文件和目录进行压缩。
所以需要tar来对多个目录、文件进行打包和压缩。
tar常用选项
-c(create) 表示创建用来生成文件包
-x:表示提取,从文件包中提取文件
-t 可以查看压缩的文件。 -z使用gzip方式进行处理,它与”c“结合就表示压缩,与”x“结合就表示解压缩。
-j 使用bzip2方式进行处理,它与”c“结合就表示压缩,与”x“结合就表示解压缩。
-v (verbose)详细报告tar处理的信息
-f(file) 表示文件,后面接着一个文件名。
-C <指定目录> 解压到指定目录
1.tar打包、gzip压缩
1)压缩
tar -czvf
压缩文件名
目录名
如:
tar czvf dira.tar.gz dira
注意:tar -czvf
与tar czvf
是一样的效果,所以说,后面统一取消-。
2)查看
tar tvf
压缩文件名
如:
tar tvf dira.tar.gz
3)解压
tar xzvf
压缩文件名
tar xzvf
压缩文件名
-C
指定目录
如:
tar xzvf dira.tar.gz
解压到当前目录
如:
tar xzvf dira.tar.gz -C /home/book
解压到
/home/book
2.tar打包、bzip2压缩
1)压缩
tar cjvf
压缩文件名
目录名
如:
tar cjvf dira.tar.bz2 dira
2)查看
tar tvf
压缩文件名
如:
tar tvf dira.tar.bz2
3)解压
tar xjvf
压缩文件名
tar xjvf
压缩文件名
-C
指定目录
如:
tar xjvf dira.tar.bz2
解压到当前目录
如:
tar xjvf dira.tar.bz2 -C /home/book
解压到
/home/book