main.c

来自「AT91RM9200的一级boot」· C语言 代码 · 共 57 行

C
57
字号
#include <at91rm9200.h>extern void AT91F_DBGU_Printk(char *);extern char _stext,_etext,_sdata,_edata;#define SRC 0x10020000   // U-BOOT 在FLASH中的起始地址#define DST 0x21f00000   // U-BOOT 载入SDRAM地址#define LEN 0x20000#define LED1	AT91C_PIO_PB8#define LED2	AT91C_PIO_PB15#define LED3	AT91C_PIO_PB16#define LED4	AT91C_PIO_PB17void decompress_image_led_on(AT91PS_PIO pPio,unsigned int flag){	pPio->PIO_CODR = flag;}void decompress_image_led_off(AT91PS_PIO pPio,unsigned int flag){	pPio->PIO_SODR = flag;}void AT91F_PIO_CfgOutput(AT91PS_PIO pPio,unsigned int pioEnable){	pPio->PIO_PER = pioEnable;	pPio->PIO_OER = pioEnable;	pPio->PIO_SODR = pioEnable;}void boot() {  int i;  char* ptr=(char*)DST;    AT91F_PIO_CfgOutput(AT91C_BASE_PIOB,LED1|LED2|LED3|LED4);	//配置GPIO为输出    for(i=0;i<LEN;i++) ptr[i]=0;  AT91F_DBGU_Printk("\n\r");  AT91F_DBGU_Printk("*********************************\n\r");  AT91F_DBGU_Printk("** Welcome to ATMEL AT91RM9200 **\n\r");  AT91F_DBGU_Printk("*********************************\n\r");    decompress_image_led_on(AT91C_BASE_PIOB,LED1);    decompress_image(SRC,DST,LEN);// 解压u-boot.bin.gz    decompress_image_led_off(AT91C_BASE_PIOB,LED1);    asm("mov pc,%0" : : "r" (DST));};void recover(char* s) {  for(;;);};

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?