*目标点亮LED
a 看原理图
想让nLED1点亮 则GPF4输出 0
其他同理
b 怎么让 GPF4 输出 0/1
* 配置功能 输出/输入/其他
* 在输出模式下设置输出高或低电平
* 看芯片手册 操作寄存器 来配置 输入/输出/其他/模式下的高低电平。
@******************************************************************************
@ File:led_on.S
@ 功能:LED点灯程序,点亮LED1
@******************************************************************************
.text
.global _start
_start:
LDR R0,=0x56000050 @ R0设为GPFCON寄存器。此寄存器
@ 用于选择端口B各引脚的功能:
@ 是输出、是输入、还是其他
MOV R1,#0x00000100
STR R1,[R0] @ 设置GPF4为输出口, 位[8:7]=0b01
LDR R0,=0x56000054 @ R0设为GPBDAT寄存器。此寄存器
@ 用于读/写端口B各引脚的数据
MOV R1,#0x00000000 @ 此值改为0x00000010,
@ 可让LED1熄灭
STR R1,[R0] @ GPF4输出0,LED1点亮
MAIN_LOOP:
B MAIN_LOOP
汇编代码
led_on.bin : led_on.S
arm-linux-gcc -g -c -o led_on.o led_on.S(编译)
arm-linux-ld -Ttext 0x0000000 -g led_on.o -o led_on_elf(链接生成 elf 文件)
arm-linux-objcopy -O binary -S led_on_elf led_on.bin(把elf格式文件转换成二进制文件,烧到开发板上)
clean:
rm -f led_on.bin led_on_elf *.o
-g 调试 -c编译不链接 -o 输出什么文件 -Ttext 代码段的地址
编译程序的步骤
a 预处理 就是一些有文件
b编译 编译c等 源文件 由.c文件生成.文件
c汇编 由.c文件生成.o文件 即二进制文件
d链接 多个.o文件 合并成一个可执行文件
下面烧写程序
*2440 启动方式
a nand 启动 b nor启动
JZ2440位nand 启动
JZ2440 包括 CPU 4k sram 组成
外接 64M SDRAM nandFlash
当开发板上电时 nandflash 前4k地址拷贝到 sram中 然后从起始地址 为0 开始启动开发板
nor启动需要在开发板外挂接norflash
norflash和nandflash 不一样 寻址方式不同
norflash 可以像读取内存一样读取数据,但是不能像内存一样写数据
nandflash 不是像串口发送数据
norflash 启动首地址 0 指向 norflash 然后 CPU 从 0 地址取址执行
*用百问网 制作的oflash
下面我用tftp 下载 LED程序
点亮LED
将led 管脚设置为输出
根据按键的状态 来使能LED 的亮灭
位操作
不要影响别的位
OpenJTAG> tftp 30000000 led_on_c.bin
OpenJTAG> mtd
device nand0 <nandflash0>, # parts = 4
#: name size offset mask_flags
0: bootloader 0x00040000 0x00000000 0
1: params 0x00020000 0x00040000 0
2: kernel 0x00200000 0x00060000 0
3: root 0x0fda0000 0x00260000 0
OpenJTAG> nand erase bootloader
NAND erase: device 0 offset 0x0, size 0x40000
Erasing at 0x20000 -- 100% complete.
OK
OpenJTAG> nand write 30000000 bootloader
NAND write: device 0 offset 0x0, size 0x40000
262144 bytes written: OK
关电 由nor 拨到 nand启动 上电 发现 灯亮了