一.mini2440的课前准备

韦老师视频–嵌入式学习

0.首先下载资料,百问官网上去下载。(韦老师的是JZ2440)
1.然后买一个烧写器(100块)–EOP-100块,接着安装驱动,插上EOP之后,更新驱动程序,三遍之后可以安装成功。
然后安装oflash的烧写程序,openOCD with GUI setup,安装好了在cmd里面运行oflash。
如果运行失败,则需要将安装目录添加到环境变量里面去。(Windows的环境变量添加)
在这里插入图片描述
使用的软件是oflash.exe 可以烧写所有的bin文件(uboot.bin led.bin ***.bin),可以烧写到nandflash 和norflash .裸机程序都要烧写到nand ,烧写到0地址,uboot可以烧写到两个flash。
使用oflash烧写时,在cmd里面先进入目标盘符,如d: c: 这样,再使用cd命令进入目标目录,使用命令:oflash ***.bin就可以烧写了。烧写完后,要把EOP拔掉,(EOP上面有复位引脚,不拔看不到效果哟),然后启动板子。

烧写报错,看笔记(有写)

2.Bin文件的烧写
Uboot烧到nor,然后使用uboot的USB下载网线下载,uboot接收到文件在烧写到nandflash,设置为nandflash启动,运行bin文件。
百问网定制的uboot在资料光盘里面,menu进入选择菜单。
在这里插入图片描述
使用网线下载,TFTP软件,可以在Ubuntu里面安装TFTP服务器Ubuntu12.04已经装好了,或者在Windows上面使用TFTP软件。
使用USB下载,要用到dnw的软件(测试USB实现,运行zadig软件,安装USB驱动libusb-win32)
在这里插入图片描述
安装完成后,可以看见uboot里面提示已经连接USB。
在这里插入图片描述
接下来就是使用dnw软件下载裸机bin文件。下载完成后,断点开发板,nand启动,重新上电。由于板子不一样,所以所有的bin文件都得自己写或者更改地址。*********

4.2440内部存储资源
在这里插入图片描述
根据手册来看,mini2440上面nand 只有128M
启动流程:在这里插入图片描述
Nandflash启动,nor不可访问。

5.字节序

在这里插入图片描述
编程操作:
置位1操作:

在这里插入图片描述
清位0操作:
在这里插入图片描述

补充知识:

1.gcc编译过程
在这里插入图片描述
链接就是将汇编生成的OBJ文件、系统库的OBJ文件、库文件链接起来,最终生成可以在特定平台运行的可执行程序。
动态链接使用动态链接库进行链接,生成的程序在执行的时候需要加载所需的动态库才能运行。
动态链接生成的程序体积较小,但是必须依赖所需的动态库,否则无法执行。
静态链接使用静态库进行链接,生成的程序包含程序运行所需要的全部库,可以直接运行,不过静态链接生成的程序体积较大。

gcc和arm-linux-gcc的常用选项
gcc的使用方法:
gcc [选项] 文件名
gcc常用选项:
-v:查看gcc编译器的版本,显示gcc执行时的详细过程
-o Place the output into
指定输出文件名为file,这个名称不能跟源文件名同名
-E Preprocess only; do not compile, assemble or link
只预处理,不会编译、汇编、链接
-S Compile only; do not assemble or link
只编译,不会汇编、链接
-c Compile and assemble, but do not link
编译和汇编,不会链接

一般应用程序才需要系统标准启动文件和标准库文件。裸机/bootloader、linux内核等程序不需要启动文件、标准库文件。

gcc -M c.c // 打印出依赖
gcc -M -MF c.d c.c // 把依赖写入文件c.d

2.Makefile语法

(1)Makefile的核心—规则 :
目标 : 依赖1 依赖2 …
[TAB]命令
当"目标文件"不存在, 或某个依赖文件比目标文件"新",则: 执行"命令"
(2)
a. 通配符: %.o
$@ 表示目标
$< 表示第1个依赖文件
$^ 表示所有依赖文件

b. 假想目标: .PHONY

(3)简单变量(即时变量) :
A := xxx # A的值即刻确定,在定义时即确定
B = xxx # B的值使用到时才确定

:= # 即时变量
= # 延时变量
?= # 延时变量, 如果是第1次定义才起效, 如果在前面该变量已定义则忽略这句
+= # 附加, 它是即时变量还是延时变量取决于前面的定义

(4)Makefile函数
a. $(foreach var,list,text) #将list列表里的var全部变为text格式
b. $(filter pattern…,text) # 在text中取出符合patten格式的值
$(filter-out pattern…,text) # 在text中取出不符合patten格式的值
c. $(wildcard pattern) # pattern定义了文件名的格式,# wildcard取出其中存在的文件
d. ( p a t s u b s t p a t t e r n , r e p l a c e m e n t , (patsubst pattern,replacement, (patsubstpattern,replacement,(var)) #从列表中取出每一个值# 如果符合pattern# 则替换为replacement
在这里插入图片描述
3.Makefile小bug
当函数有头文件的时候,我们一定要将目标和依赖写上,如a.c 依赖a.h 那么在Makefile里面一定要加上 a.o:a.c a.h这是一个只有目标和依赖的语句,规则是空的(一定要把规则行的tab删掉,否则会出错)但是有个问题,文件的依赖不可能每个打开看,所以用到一下语句。
gcc -M c.c // 打印出依赖
gcc -M -MF c.d c.c // 把依赖写入文件c.d
gcc -c -o c.o c.c -MD -MF c.d // 编译c.o, 把依赖写入文件c.d
*.d里面都是依赖文件。
在这里插入图片描述
在Makefile里面这样改写 .表示隐藏文件
在这里插入图片描述
定义一个即时变量,用函数来patsubst 来生成空的.%.o.d文件,并判断是否为空(下面用-MD -MF来生成所需要的依赖文件放到生成的空的.%.o.d文件)不为空则添加进来(include)。

CFLAGS-编译选项 CFLAGS = -Werror (将所有的警告当做错误)
在这里插入图片描述
CFLAGS = -Werror -I. 指定找头文件的目录为当前目录 -Iinclude指定找头文件的目录为include目录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值