CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 6918|回复: 2

给大家分享一个N年前自己写的bootloader,启动kernel原理很重要

[复制链接]
发表于 2015-5-30 11:31:22 | 显示全部楼层 |阅读模式
本帖最后由 jiangdou 于 2015-6-1 12:31 编辑

给大家分享一个N年前自己写的bootloader,启动kernel原理很重要




地址:https://github.com/jiangdoudou/mys32440_bootloader_for_kernel



整体文件






boot kernel   代码



makefile文件




还带uboot命令哦
好比:sunxi#  

main.c
  1. int main(void)
  2. {
  3.   char c;
  4.   char cmd_buf[200];
  5.   uart0_init();

  6.   puts("\n\r========================================\n\r");
  7.   puts("The board:TQ2440\n\r");
  8.   puts("The NAND:K9F1216U0A 256MB\n\r");
  9.   puts("The NOR:EN29LV160AB 2MB\n\r");
  10.   puts("The SRAM:HY57V561620 x2 64MB\n\r");
  11.   puts("just bootloader linux        date: 2009.8.19;by jiangdou\n\r");
  12.   puts("===========================================\n\r");


  13.   lcd_Init();
  14.   my_logo();
  15.   PutPixel(20,250,0x001F);
  16.   PutPixel(40,250,0x07E0);
  17.   PutPixel(40,250,0xF800);
  18.   //paint_Bmp(0,0,320,240,logo);
  19.   //lcd_ClearScr(0x001F);
  20.   //paint_Bmp((LCD_XSIZE_TFT -80) / 2, (LCD_YSIZE_TFT -80) / 2, 80, 80, logo);
  21.   puts("Booting Linux ...\n\r");
  22.   boot_zImage(0x00200000, 0x00300000);

  23.   while (1)
  24.     {
  25.       puts("the menu of the update programe:\n\r");
  26.       puts("[w] write the nand flash\n\r");
  27.       puts("[r] read the nand flash\n\r");
  28.       puts("[e] erase the nand flash\n\r");
  29.       puts("[g] get file, and write to nand flash 0 block\n\r");
  30.       puts("[x] get file to ddr(0x32000000), run it\n\r");
  31.       puts("[s] reset the programe\n\r");
  32.       puts("[k] reset the programe\n\r");
  33.       puts("Please enter the chose:\n\r");

  34.       do {
  35.         c = getc();
  36.         if (c == '\n' || c == '\r')
  37.           {
  38.             puts("\n\r");
  39.           }
  40.         else
  41.           {
  42.             putc(c);
  43.           }
  44.       } while (c == '\n' || c == '\r');
  45.       
  46.       switch (c)
  47.         {
  48.         case 'w':
  49.         case 'W':
  50.           {
  51.             nand_write_test();
  52.             break;
  53.           }

  54.         case 'r':
  55.         case 'R':
  56.           {
  57.             nand_read_test();
  58.             break;
  59.           }

  60.         case 'e':
  61.         case 'E':
  62.           {
  63.             nand_erase_test();
  64.             break;
  65.           }

  66.         case 'g':
  67.         case 'G':
  68.           {
  69.             update_program();
  70.             break;
  71.           }

  72.         case 'x':
  73.         case 'X':
  74.           {
  75.             run_program();
  76.             break;
  77.           }

  78.         case 's':
  79.         case 'S':
  80.           {
  81.             void (*theProgram)(void);
  82.             theProgram = (void (*)(void))0x33f80000;
  83.             theProgram();
  84.             break;
  85.           }
  86.        
  87.        
  88.         }
  89.     }

  90.   return 0;
  91. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

评分

参与人数 1金钱 +5 收起 理由
dreamer2038 + 5

查看全部评分

回复

使用道具 举报

发表于 2015-5-31 23:00:35 | 显示全部楼层
原来bootloader这么短

回复 支持 反对

使用道具 举报

发表于 2015-6-1 08:09:11 | 显示全部楼层
谢谢分享、!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-11-22 20:09 , Processed in 0.022971 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部