嵌入式开发完整体系课程(含项目) 扫二维码继续学习 二维码时效为半小时

(170评价)
价格: 598.00元

ubuntulinux系统

12.04 

[展开全文]
李木华 · 2018-07-08 · 0

1.通过NFS挂载分区

1.1 在ubantu安装、配置NFS服务

1.2 在开发板执行:

mount 192.168.1.100:/opt /mnt/ -t nfs -o nolock  ==>将网络上IP为100的主机中的/opt挂载到开发板的/mnt

 

2. 设置uboot的参数

2.1 查看所有的参数:print / pri

[展开全文]
可爱的反派角色 · 2018-06-05 · 0

shell 命令2

cd(change directory)

1.作用:改变当前工作路径

2.用法:

           cd dir/   ==>将当前工作路径改为dir/

           cd  -      ==>将当前工作路径更改为刚刚去过的目录(返回)

           cd           ==>将当前工作路径改为家目录

 

find

1.作用:查找文件

2.用法:

          find  dir/  -name  "xxx"  ==>在dir/查找名字为xxx的文件

           find  dir/  -name  "*.c"  ==>在dir/查找后缀名是.c的文件

 

 

grep

1.作用:查找字符串

2.用法:

          grep "xxx" dir/ -Hrnw  ==>z在dir/中,递归地(r)按照全字匹配(w)查找"xxx"这个字符串,并且找到之后打印出其所在文件名字(H)以及行号(n)。

 

 

head/tail

1.作用:查看一个文件的开头/结尾的若干行

2.用法:

          head  file  -n  10  ==>查看文件file的头10行

           tail  file -n 10  ==>查看文件file的末尾10行

 

sort

1.作用:排序显示(按ascll码排序)

2.用法:

 

uniq

1.作用:去掉文件中相邻重复的行

2.用法:

 

diff/patch

1.作用:产生补丁文件/打补丁

2.用法:

 diff  a.txt  b.txt    ==>比较a、b文件是否有不一样的地方,将不一样的地方打印出来

diff  Pro1.0  pro2.0  -urNB > 1.0.patch   

==>比较两个版本,将他们的差异按照标准补丁格式存放到1.0.patch当中。

 

   patch -p0<1.0.patch  ==>将1.0.patch对当前目录(-p0)打补丁。

 

file  

1.作用:

2.用法:

 

 

[展开全文]
可爱的反派角色 · 2018-06-05 · 0

shell命令3

echo

1.作用:打印信息,显示文本(相当于C语言中的printf)

2.用法:

   echo  "hello"   ==>打印hello

   echo  $PATH   ==>打印变量PATH的值

 

date

1.作用:显示当前时间

2.用法:  date  ==>

 

tar

1.作用:归档、压缩

2.用法:

tar czvf example.tar.gz  file1 file2  dir1/  dir2/   ==>将file1  file2  dir1/  dir2/  统统按照gzip格式压缩成example.tar.gz

tar  -tf example.tar.gz  ==>查看压缩包example.tar.gz中有哪些文件

 

tar xzvf example.tar.gz  ==>将example.tar.gz中的文件解压到当前目录

 

tar xzvf example.tar.gz -C  dir/ ==>将example.tar.gz中的文件解压到dir/

注:将以上命令中的"z"改成"j",那就是针对bzip2格式的命令,bzip2格式的压缩包的后缀是example.tar.bz2

gzip

1.作用:压缩文件

2.用法:

 

whereis 

1.作用:查找命令,显示所查找命令所在的索引,并显示帮助文档

2.用法:

 

which

1.作用:查找实用程序

2.用法:

 

ps(process)/kill/top(与进程相关的命令)

1.作用:ps  ==>列出进程

kill ==>给指定进程发送一个指定的信号,无条件杀死进程

top  ==>动态查看当前系统的进程信息

2.用法:

ps -ef   

ps aux 

ps ajx

kill -l  ==>查看当前系统的所有信号

kill -s SIGKILL 1234   ==>给进程号为1234的进程发生SIGKILL

kill -9 11234    ==>给进程号为1234的进程发生9号信号(即SIGKILL)

killall process-name  ==>  给进程名为process-name的进程发送SIGTERM信号(即终结信号)

top    ==>查看系统所有进程的状态信息(使用<和>翻页,使用q退出)

top -p 1234  跟踪进程号为1234的进程状态信息

 

df  

1.作用:查看系统各个分区的详细信息

2.用法:

   df -h    ==>以人类看得懂的方式显示当前

du 

1.作用:查看文件或目录的大小

2.用法:

du -sh file   ==>显示文件file的大小

du -sh dir/   ==>显示目录dir/的大小

[展开全文]
可爱的反派角色 · 2018-06-05 · 0

1.nfs服务配置

下载nfs apt-get nfs

peizhi配置

指定目录、分区作为网络文件系统分区。

第一步:下载安装

sudo apt-get install nfs-kernel-server

第二步:配置nfs,使得某一个指定的目录成为nfs网络分区,以供其他主机挂载

sudo vi  /etc/exports

比如 /xx 192.168.1.100(如果100开发板必须是100才能挂载)去掉ip,*就是任何都可以挂载。后面加(rw,sync,no_subtree_check)就可以推出了

/XX就是对外挂载的目录,可以修改为其他的目录。

(rw,sync,no_subtree_check)这些是挂载分区的属性。

3.重新加载该配置文件

sudo /etc/init.d/nfs-kernel-server reload

4.重新启动nfs服务

sudo /etc/init.d/nfs-kernel-server restart

5.查看已经挂载的目录

showmount -e

[展开全文]
学不会不毕业 · 2018-05-21 · 0

linux有两种文件,一种是硬链接文件,一种是软连接文件,硬链接文件是相当于文件别名,修改后文件有两个,但是一样的。还等于文件的引用。局限性:是不能给目录区别名,不能跨分区。已经被遗弃。软连接相当于windows里的快捷方式。可以跨分区,指向母驴,身份一样,有一个身份不一样的指向改的,修订版本号变化频繁,软连接只包含主板本好的软连接。有几个名字就有多少引用,ls

可以查看第二列。

1.in

用法:修改文件别名,

in xx xx硬链接

in -s xx xx软连接

[展开全文]
学不会不毕业 · 2018-05-20 · 0

1.windows

2.ubuntu-vm-setting-bridged下面勾和上面两个勾勾上。

设置ip windows的应该是先打开网络共享中心,然后点击网络链接,然后找到属性,协议修改即可

3.配置ip,子网掩码,默认网关sudo vi 有空格/etc/network/interfaces

auto lo iface lo inet loopback设置了系统的回环设备,默认就有的,不用管他。

auto eht0-系统启动的时候,自动启动第0块以太网卡etho

iface etho inet static-static固定ip,dhcp自动获取ip。

geteway-默认wangguan

netmask-子网掩码

4.配置dns服务器:sudo vi /etc/resolvcof/resolv.conf.d/base确保该文件有如下信息

nameserver 202。96.134.133(跟windows一样)

5.重启网络服务:

sudo vi /etc/init.d/networking force-reload 重新加载网络配置文件。

sudo /etc/init.d/networking restart

重启dns服务:sudo /etc/init.d/resolvconf restart

ping www.baidu.com-延时返回可以

(如果不行,就添加默认网关:

sudo route add default gw 192.168.1.1重启sudo /etc/resolvcof/resolvconf restart

再ping一下就可以了。)

练习:使用apt软件管理器,下载ssh试试或者是tree/vim

[展开全文]
学不会不毕业 · 2018-05-17 · 0

ubuntu-12.04.iso

ubuntu.

touch xxx.deb

application下面有一个software center,点edit,software sources,点download from选择中国的。点close即可。

在联网的情况下就可以sudo apt-get update下载软件列表。

下载安装软件:sudo apt-get install vim

下载远端的服务器列表到电脑上。

软件安装包存放地址查找:cd /var/

cd cache/

cd apt

ls

archives

pwd

 

[展开全文]
学不会不毕业 · 2018-05-07 · 0

1.在Ubuntu下安装NFS

sudo apt-get install nfs-kernel-server

2.配置nfs,使得某一个你指定的目录,成为nfs网络分区,以供其他主机挂载

sudo vim /etc/exports

在最后一行加入你要挂载的目录

如:/opt 192.168.3.200 (rw,sync,no,subtree_check)

这种方法只允许一个人挂载你的opt目录

第二种方法是:

/opt *(rw,sync,no,subtree_check)

这种方法则任何人都可以挂载你的opt目录

/opt 别人挂载的目录

* 所有IP都可以挂载该目录

(rw,sync,no,subtree_check) 挂载分区属性,照抄即可。

3.重新加载改配置文件:

sudo /etc/init.d/nfs-kernel-server reload

4.重新启动nfs服务

sudo /etc/init.d/nfs-kernel-server restart

5.查看已经提供nfs挂载的目录

showmount -e

[展开全文]
8z00z8 · 2018-04-21 · 0

SRC=$(wildcard *.c)

在Makefile中输写一个函数的格式:$(function arg1,arg2,arg3,....)其中function为函数名字,后面跟一个空格,然后是参数列表,多个参数间用逗号隔开,整个函数用$()包裹起来

patsubst替换指令:A=$(patsubst %c,%.O,a.c b.c)

替换后A为a.o b.o

指定终极目标:make TARGET,终极目标指makefile中第一个出现的规则中的第一个目标

指定makefile所在路径:make -c dir/

                                   make --directory=dir/

[展开全文]
617076572 · 2018-04-04 · 0

makefile中的变量定义

1.直接定义方式

B=china 

A:=I LOVE $(B)  只会对前面的语句进行搜寻,而不是整个文件。

追加变量的值A=apple  A+=tree,则A变为apple tree

修改变量的值:A=srt.c string.c  tcl.c

B=$(A:%.c=%,o) 这样B的值变为srt.o string.o  tcl.o

@echo $(A)这里的@表示只输出命令的结果,不输出命令本身

特殊变量:VPATH指定Makefile中文件的备用搜寻路径,若干目标文件或依赖文件不再当前路径时,make会在此变量指定的目录中搜寻,多个路径的话用空格或冒号隔开

[展开全文]
617076572 · 2018-04-04 · 0

程序调试方法:

肉眼查看语法错误

打印调试语句,顺便定位发生错误位置

判断错误的类型:core核心转储文件(内存照片)

如果是段错误,试图生成core文件,让系统保存程序发生错误时的内存状态,然后用gdb直接定位出错点

如果是段错误,或者调试器无法通过core文件直接定位出错点,只能求助于gdb进行单步调试

生成核心转储文件:ulimit -c unlimited

                             ulimit -a

gcc debugme.c -o debugme  -DDEBUG  -g       -gdb

./debugme,产生core出错文件,进入查看出错的位置信息,

再用gdb ./debugme core,就会提示出错的代码行位置。

 

 

 

 

 

 

 

[展开全文]
617076572 · 2018-04-04 · 0

插件:动态加载链接库,

静态库:ar rcs lib×××.a *.o将所有的.o生成×××的静态库

--------------------------------------------------------------------------

动态库:gcc -shared -fPIC -o libyyy.so *.o

先用gcc life.c -o life.o -c -I  ../includ/

生成life.O,再用ar rcs liblife.a  *.O生成liblife.a的静态库

或者用gcc -shared -fPIC -o libyyy.so *.o生成动态库libyyy.so,最好复制到lib目录里

那么总工程分为src  lib  include三个文件夹,

其中include里放head.h lib里放liblife.a和libyyy.so

src里放life.C,life.O 和main.c

-------------------------------------------------------------------

理解静态库和动态库的区别?

静态库是将代码复制到工程里,但缺点是浪费了存储空间,(书店买书的过程)

动态库:(图书馆借书的原理)优点是节省大量空间,应用的静态库要多。

动态库连接还分为两种方式:静态链接和动态链接,静态链接里的库函数在库里的地址是固定的。

动态链接:子函数名字一样,但参数不同,也就是定好多个接口,主程序通过传递参数不同,调用不同的接口即可实现动态连接调用

gcc编译完通过,

export LD_LIBRARY_PATH=lib指定库位置,然后就可以运行./main

或者执行gcc src/main.c -o main -I include/ -L lib/-lyyy -wl, rpath=./lib 编译通过,然后运行./main成功运行。

-----------------------------------------------

 

 

 

 

 

 

[展开全文]
617076572 · 2018-03-13 · 0

特殊关键字:CV限定词

1.const(一般用于定义指针,只用于只读型变量申明)

只能在定义的时候,给予赋值,比如

const int b=100;

不可以通过*p的方式来修改变量的值。

命令窗口中输入strncy,按下shift+k进入strcpy帮助文档,

 volatile 使用(易变的,防止优化)与volatile完全相反。

*(volatile unsigned long *)0x40010c00)=100;

当软件程序修改或硬件发生变化时,都可以使得这块内存发生变化,特别是与硬件有关的内存控制器

务必让那个CPU每次都要读取内存中信息,防止缓存优化。

resrtict(促进优化)只能用来说明指针

示例:restrict int *m=malloc(100)m指向堆内存,而且是唯一的

likely和like指出现在内核中GNU扩展的语法

为提高执行工作效率才设计的

attribute机制:假设做好了a.c里有个main函数,输入命令readelf -S a,看到默认main函数放在.init段里面,初始化代码放这里只会被执行一次,若想放在别的段里,可以通过attribute来指定。

 

 

 

 

 

[展开全文]
617076572 · 2018-03-13 · 0

如何用secure-crt工具远程访问linux系统?

在ubantu里下载安装ssh服务:

sudo apt-get ssj

sudo apt-get install ssh

在secure-crt选中ssh2协议,然后在secure-crt的主机名填写远程linux系统的iP地址,用户名填写远程linux系统的用户名geconline,点连接,保存密码,即可远程登陆远程linux系统。

source insight很重要的软件编辑和查看工具。

可以按下ctrl,再点击代码处,即可快速实现跳转到代码里。再按alt+,即可回来,再按alt+。就又回去了,若项目太大,无法立刻跳转到,则需要

projcet---synchronize files--force all files to be  repared 即可完成所有文件同步,

查找文件的功能:要记得勾选project wide选项,不然只能查找本文件内容。

keil软件应用开发STM32

 

[展开全文]
617076572 · 2018-03-13 · 0

可移植性数据类型思考对嵌入式系统开发影响,考虑到数据类型的统一性,采用宏定义,头文件包在usr/include里有很多宏定义,

linux系统是32位,每次存取32位数据进行处理,即每次内存以4字节为单位进行处理

m值其实是定每个变量的相对位置,代表是对应的倍数,代表起始地址的要求,m对结构体也有要求必须是

struct node

{ char a;1byte,m=1

 short c;  2byte ,m=2

int b _attribute_((aligned(64)));4byte,m=4

double d; 8bytes,m=4

};// m=64

int b _attribute_((aligned(64)))指定结构体中的首变量a和本变量b以64的整数倍开始而已,然后以四个单元作为填充,不够的补零即可。而且要求整个结构体占用内存64个单元的整数倍为止。

结构体中的位置地址对齐: 默认要求首变量的起始地址是64的整数倍,char型占一个字节  int占4个字节  short占2个字节,double占8个字节,结构体的大小是按照成员中的最大的变量所占的大小来分配内存,

 


[展开全文]
617076572 · 2018-03-13 · 0

test -e file && test -r file 而是file是否存在和是否可读,如果是,就显示出file里的内容

if [ -e file] && [ -r file]

then

cat file

 

shell也可以支持函数编写,

[展开全文]
617076572 · 2018-03-09 · 0

典型系统启动脚本:vi /etc/init.d/rc

以“!/bin/sh”shell软件解释命令

在shell中,自定义变量,Myanme=“Michael”

注意赋值号两边没有空格,且变量名只能包含字母和数字,且只能英文开头。

变量的引用举例:echo $Michael

用$表示对变量的引用

举例:./example.sh abcd 1234

$#代表命令行参数个数2

 $*代表所有的参数,即abcd 1234

$@同上

$n第n个参数,

$$代表当前shell的进程号PID

$?代表最后一个命令执行后的返回值

---------------------------------------------------------

$var="apple"

echo "{#var}" 计算一个字符串的字符个数

echo $a=echo $(a)

 

[展开全文]
617076572 · 2018-03-09 · 0

ctrl+alt+t打开一个终端

权限举例:-rw-r--r-- 

 drwxrwxrwx d表示目录,-表示文件,r读w写x执行

修改权限:sudo chmod u-w,g-r,o+x wrap.c

alias c='clear' 给命令取别名

[展开全文]
617076572 · 2018-03-09 · 0