使用C语言(四)

来源:互联网 发布:max守望先锋数据不更新 编辑:程序博客网 时间:2024/06/05 08:33


从汇编跳入C语言,我们需要设置一下堆栈,才能正常使用。

除此之外,硬件上还有一些东西需要初始化一下。
1.关闭看门狗
2.初始化时钟
3.初始化内存 
然后才是初始化堆栈。

我们设置为Nand启动,开机会把前4k拷贝到片内内存SRAM中运行。
如果是NOR启动,直接就在Nor上运行了,NOR不太清楚原理就先放弃。

那么我们
1.关闭看门狗,默认居然是开的
2.时钟启动的时候是40M,我们先不管他了
3.据说SDRAM不需要初始化,SRAM应该也不需要我们做什么吧

4.初始化堆栈

├── c_led
│   ├── led_on_c.c
│   └── Makefile
├── startc.S



.text
.global _start
_start:
        //1.关闭看门狗

        ldr  r0,=0x53000000
        mov  r1,#0x0
        str  r1,[r0]
        //2.初始化时钟
        //3.初始化SDRAM
        //4.给C程序准备堆栈
        ldr  sp,=1024*4
        //跳入C main()
        bl   main

HALT:
        b    HALT

Makefile:

#define GPBCON      (*(volatile unsigned long *)0x56000050)
#define GPBDAT      (*(volatile unsigned long *)0x56000054)

int main()
{
    GPBCON = 0x00000100;    // 设置GPB4为输出口, 位[8:7]=0b01
    GPBDAT = 0x00000000;    // GPB4输出0,LED1点亮

    return 0;
}



0 0