C语言的指针操作:
①所有的变量在内存中都有一块区域;
②可以通过变量/指针操作内存;
TYPE *p = val1;
*p = val2;
把val2写入地址val1的内存中,写入sizeof(TYPE)字节;
TYPE *p = addr;
*p = val;
把val写入地址addrd的内存,,写入sizeof(TYPE)字节;
a. 我们写出了main函数, 谁来调用它?
b. main函数中变量保存在内存中, 这个内存地址是多少?
答: 我们还需要写一个汇编代码, 给main函数设置内存, 调用main函数
led.c源码:
int main()
{
unsigned int *pGPFCON = (unsigned int *)0x56000050;
unsigned int *pGPFDAT = (unsigned int *)0x56000054;
/*配置GPF4为输出引脚*/
*pGPFCON = 0x100;
/*配置GPF4输出0*/
*pGPFDAT = 0;
return 0;
}
start.S源码:
.text
.global _start
_start:
/*设置内存:sp栈*/
ldr sp,=4096 /*nand启动*/
// ldr sp, =0x40000000 /*nor启动*/
/*调用main*/
bl main
halt:
b halt
Makefile源码:
all:
arm-linux-gcc -c -o led.o led.c
arm-linux-gcc -c -o start.o start.S
arm-linux-ld -Ttext 0 start.o led.o -o led.elf
arm-linux-objcopy -O binary -S led.elf led.bin
arm-linux-objdump -D led.elf > led.dis
clean:
rm *.bin *.o *.elf *.dis
最后将上面三个文件放入Ubuntu主机编译,然后烧写到开发板即可。