亲爱的卡友们,如果看完文章之后还是有疑惑或不懂的地方,请联系我们,自己去理解或猜答案是件很累的事,请把最麻烦的事情交给我们来处理,术业有专攻,闻道有先后,深圳市雷龙发展专注存储行业13年,专业提供小容量存储解决方案。
  【SD NAND】用ok6410进行烧写时,每次都需要敲一大堆命令,又费时又费力。 记得以前用TQ2440时,u-boot启动时会有一个菜单,只按一个数字键就把内核烧好了,非常方便。
  现在这张SD卡功能就很全面了,不仅能够直接从SD卡启动,而且还可以烧写NAND Flash中的u-boot zImage rootfs,呵呵。
  下面就把这个功能加到ok6410的u-boot 中去。
  一、修改SD卡的u-boot1.1.6
  1. common/main.c中
  void main_loop (void)
  {
  ……
  if(bootdelay>=0&&s&&!abortboot(bootdelay)){ }
  //如果在启动过程中有按键,打断了执行过程的话
  run_command("menu",0);
  //如果menu返回的话,就进入u-boot的shell中
  #ifdef CFG_HUSH_PARSER
  parse_file_outer();
  ……
  }
  2. 执行menu的过程
  run_command("menu", 0),最终会执行do_menu.
  do_menu 开始时先打印出命令菜单,然后根据不同的选择,执行不同的命令。
  所以添加的文件 common/cmd_menu.c,如下:
  #include
  #include
  #include
  #include
  void print_menu_usage(void)
  {
  printf("rn##### SD boot Menu#####rn");
  printf("[1] Download u-boot bootloader to Nand Flashrn");
  printf("[2] Download Linux Kernel to Nand Flashrn");
  printf("[3] Download CRAMFS image to Nand Flashrn");
  printf("[4] Download YAFFS image to Nand Flashrn");
  printf("[5] Boot the systemrn");
  printf("[6] Format the Nand Flashrn");
  printf("[0] Set the boot parametersrn");
  printf("[a] Download User Program (eg: uCOS-II or TQ2440_Test)rn");
  printf("[b] Download LOGO Picture (。bin) to Nand Flash rn");
  printf("[q] quit from menurn");
  printf("Enter your selection: ");
  }
  intdo_menu(cmd_tbl_t*cmdtp,intflag,intargc,char*argv[])
  {
  intc;
  char cmd_buf[200];
  while(1)
  {
  print_menu_usage();
  c=getc();
  printf("%cn",c);
  switch(c)
  {
  case'1':
  {
  strcpy(cmd_buf,"fatload mmc 0:1 50008000 u-boot.bin_nand; nand erase 0 100000; nand write.uboot 50008000 0 10000");
  run_command(cmd_buf,0);
  break;
  }
  case'2':
  {
  strcpy(cmd_buf,"fatload mmc 0:1 50008000 zImage_nand; nand erase 100000 500000; nand write.e 50008000 100000          500000");
  run_command(cmd_buf,0);
  break;
  }
  case'3':
  {
  //strcpy(cmd_buf,"fatload mmc 0:1 50008000 u-boot.bin; nand erase 0 100000; nand write.uboot 50008000 0 10000");
  //run_command(cmd_buf,0);
  break;
  }
  case'4':
  {
  //strcpy(cmd_buf,"fatload mmc 0:1 50008000 rootfs.yaffs; nand erase 600000 4A4000; nand write.yaffs2 50008000 600000 4A4000");
  //strcpy(cmd_buf,"fatload mmc 0:1 50008000 rootfs.yaffs; nand erase 600000 $(filesize); nand write.yaffs2 50008000 600000 $(filesize)");
  //注意:nand erase 600000 $(filesize),假设有坏块的话,这样会有数据不能写入, 所以这个地方可以固定一个较大值,如
  // 0x1400000=20M,所以rootfs.yaffs的大小不能超过20M,
  //考虑此处是不是要加上NAND Flash分区: nand erase root,把整个的root分区全部擦除,这样就不必担心是否有坏块的问题了
  strcpy(cmd_buf,"fatload mmc 0:1 50008000 rootfs.yaffs; nand erase 600000 1400000; nand write.yaffs2 50008000 600000 $(filesize)");
  run_command(cmd_buf,0);
  break;
  }
  case'5':
  {
  strcpy(cmd_buf,"bootm 50008000");
  run_command(cmd_buf,0);
  break;
  }
  case'q':
  return;
  default:
  printf("command not foundn");
  break;
  }
  }
  }
  U_BOOT_CMD(
  menu,5,1,do_menu,
  "menu - manipulate BMP image datan",
  "menu long help: TNND mu you"
  );
  3. 添加到Makefile中
  最后在common/Makefile中添加一行
  COBJS+=cmd_menu.o
  注意:在组合命令时,如NAND write不知道烧写的大小怎么办? 没关系,有变量 $(filesize), 只要加上这个任何问题都不再困难。
  上面的50008000是从SD卡启动时,要读到的内存地址; 若是从Nand Flash启动要把上面的50008000改为C0008000
  二。 测试一下
  2.1 sd卡
  a. 因为都是从SD卡和第一个分区读数据,所以将SD卡分区时第一个分区格式必须为FAT32.
  b. 编译u-boot.bin:
  代码要用光盘中带的u-boot,这个支持从NAND Flash 启动
  make forlinx_nand_ram256_config, 后生成 u-boot.bin
  复制到SD卡的第一个分区, 并改名为 u-boot.bin_nand(要与u-boot代码中的名称保持一致)
  c. 编译zImage
  代码要用光盘中带的linux-3.0.1, make后生成zImage
  复制到SD卡的第一个分区, 并改名为 zImage_nand(要与u-boot代码中的名称保持一致)
  d. 生成rootfs.yaffs
  可以用光盘中带的FileSystem-Yaffs2.tar.gz, 解压后,嫌太大,把不需要的删掉,
  里面的busybox好像是动态链接的,自己编个静态的busybox,最后生成rootfs.yaffs
  sudo /opt/6410/4.3.2/bin/mkyaffs2image-nand2g FileSystem-Yaffs2 rootfs.yaffs
  NAND Flash 是2G的所以要用命令 mkyaffs2image-nand2g
  将rootfs.yaffs复制到SD卡的第一个分区(要与u-boot代码中的名称保持一致)
  注意: 如果不确定rootfs本身有没有问题,可以先从nfs启动,看是否正常。
  如果正常再用mkyaffs2image-nand2g,做成yaffs镜像烧入到NAND Flash中。
  亲爱的卡友们,如果看完文章之后还是有疑惑或不懂的地方,请联系我们,自己去理解或猜答案是件很累的事,请把最麻烦的事情交给我们来处理,术业有专攻,闻道有先后,深圳市雷龙发展专注存储行业13年,专业提供小容量存储解决方案。

如何为SD卡与NAND Flash的uboot加上menu菜单!相关推荐

  1. 制作SD卡启动自己编译的uboot.bin

    README for FriendlyARM Tiny4412 ----------------------------------------------------- 1. Build uboot ...

  2. 从Nand Flash启动U-BOOT的基本原理

    从Nand Flash启动U-BOOT的基本原理 前4K的问题  如果S3C2410被配置成从Nand Flash启动(配置由硬件工程师在电路板设置), S3C2410的Nand Flash控制器有一 ...

  3. IMX6 EMMC、SD卡启动引脚配置及uboot修改为SD2启动

    开发环境 平台:imx6dl 内核:linux-4.1.15 uboot:2014 问题描述 在IMX6中SD卡启动通常都是用SD3系列的引脚去作为SD卡槽的引脚,如下图. 总有些意外,比如这次的这块 ...

  4. 一直以来使用div menu下拉时flash总是覆盖div menu菜单,当时就很老火了。

    一直以来使用div menu下拉时flash总是覆盖div menu菜单,当时就很老火了,今天在网上搜索找到下面解决方法. 有两种方法, 一种就是设置flash为透明: 但是如果你在DW中插入动画,再 ...

  5. sd卡烧写linux内核,uboot从SD卡烧写内核和文件系统

    环境:ubuntu 13.04 一.首先制作sd启动盘: 插入SD卡 sudo dd iflag=dsync oflag=dsync if=tiny210v2-uboot.binof=/dev/mmc ...

  6. [Realtek sdk-4.4.1]RTL8198D Nand Flash 使用uboot env

    Uboot的环境变量保存位置 vendors/Realtek/luna_ap_arm/conf44/V100_98FH_8367RB/uboot-env-98f-eng.txt 要支持uboot en ...

  7. STM32 USB SD卡读卡器和NAND FLASH模拟U盘

    本次工程是要同时实现SD卡读卡器和NAND Flash模拟U盘的功能.结合之前的两个工程,稍稍修改下就可以了. 既然要实现两个盘,当然在usb_prop.c中的Max_Lun变量赋值为1,在USB_U ...

  8. 【FatFs】基于STM32 SD卡移植FatFs文件系统

    相关文章 <[SDIO]SDIO.SD卡.FatFs文件系统相关文章索引> 1.前言 FatFs是一个通用的FAT/exFAT文件系统模块,用于小型嵌入式系统.它完全是由 ANSI C 语 ...

  9. SDIO——读写SD卡

    SDIO的设备分类: SD / IO卡:这不是一种卡,现在已经不常用了,用到时再查. SD存储卡:分局容量不同有三种名字① <= 2GB 的叫SDSC:② >2GB <= 32GB的 ...

最新文章

  1. 面试官问:ZooKeeper 一致性协议 ZAB 原理
  2. Pytorch:transforms的二十二个方法
  3. 类linux系统/proc/sysrq-trigger文件功能作用
  4. 关于更新 Web 应用程序 URL 和 IIS 绑定
  5. 如何在C#中使用Win32和其他库之三
  6. uniapp添加网站favicon文件
  7. 高级程序员如何面对职场压力?(2)--受伤的总是我
  8. Ubuntu下的Linux内核的编译及安装
  9. Docker 容器互联 --link 和 自定义网络
  10. 如何根据离散点自动绘制等值线(等高线)之 三角形法
  11. 940mx黑苹果驱动_让黑苹果变得更完美——BCM94532HMB无线蓝牙接力完美驱动!
  12. jquery的图片轮播 模板类型
  13. 计算机网络显示红X无法连接,电脑无线网络连接不上,出现了红x❌
  14. 计算机教程无线路由器桥接上网,两个无线路由器怎么桥接?如何桥接两个无线路由器...
  15. 关闭防火墙步骤(详细)
  16. 麒麟座V3.1接入OneNET平台初体验--上传温湿度
  17. Linux操作系统中man命令的用法,Linux 系统中的MAN命令使用祥解
  18. js刻度尺插件_js滑块刻度尺插件
  19. cdn perl_菜鸟教程perl总结
  20. 粤嵌打卡第51天(小白带你进入bootstrap的学习(包含常用的页面插件源码供大家ctr+v))

热门文章

  1. 天生不凡服务器维护怎么办,《天生不凡》5月23日更新维护公告
  2. 小程序脚本语言WXS详解
  3. 非物质文化遗产的法律保护模式(九)
  4. es where_ES是王者荣耀战队?PDD怒斥喷子声明他才是ES战队老板
  5. 谷粒商城(商品上架、首页、异步、商品详细)思路详解
  6. 如何打开计算机无线功能灰色,win10系统下无线开关变成灰色如何解决
  7. git重命名远程分支名称
  8. 第三方QQ、微博登陆
  9. java httponly_HttpOnly是个什么鬼
  10. 2021.10.19练习2