arm9_GPIO

1.首先进入嵌入式领域是通过stm32,算是入门机的嵌入式的硬件;接着接触了一些实时操作系统,当然linux早些时间都有接触过,但都只知道是什么,不知道究竟能干什么?所以刚踏入工作,之余,为了不消极kill time,也算进一步窥探嵌入式世界里究竟是是什么东西在吸引着无数的人,继续写博客记录一些学习历程和小想法。对于别人想要查阅信息以得到自己的标准答案,在这里大概率是行不通的

2.废话不多说,现在进入正题。什么是嵌入式linux的基本内容:bootloader,内核,驱动,文件系统;当然还有基础中基础:裸机。现在先接触裸机,学习的机子是jz2440

3.点亮led:3.1看原理图找引脚,配置输入输出模式,设置输入输出值

//led.c
#define
GPFCON (*(volatile unsigned long *)0x56000050) #define GPFDAT (*(volatile unsigned long *)0x56000054) int main() { GPDCON = 0x00000100; //bit[9:8] = 0b01为输出模式 GPDAT = 0x00000000; //bit[4] = 0b0输出低电平点亮led return 0 ; }

3.2启动文件

@startup.s
.text .
global _start _start : ldr r0, = 0x53000000 @watchdog寄存器地址 mov r1, #0x0 str r1, [r0] @写0禁止watchdog,否则会不断重启 ldr sp, =1024*4 @设置堆栈 bl main halt_loop: b halt_loop

3.3.Makefile

led.bin : startup.S  led.c
    arm-linux-gcc -g -c -o startup.o startup.S
    arm-linux-gcc -g -c -o led.o led.c
    arm-linux-ld -Ttext 0x0000000 -g  startup.o led.o -o led_elf
    arm-linux-objcopy -O binary -S led_elf led.bin
    arm-linux-objdump -D -m arm  led_elf > led.dis
clean:
    rm -f led_on_c.dis led_on_c.bin led_on_c_elf *.o

猜你喜欢

转载自www.cnblogs.com/lzd626/p/10505111.html