当前位置: 首页 > news >正文

湖南网站建设推广优化乐陵seo网站优化

湖南网站建设推广优化,乐陵seo网站优化,百度视频免费下载,龙泉市旅游门户网站建设分类#xff1a; Nand 驱动 2011-11-06 23:48 705人阅读 评论(2) 收藏 举报 uboot 与系统内核中 MTD分区的关系#xff1a; 分区只是内核的概念#xff0c;就是说A#xff5e;B地址放内核#xff0c;C#xff5e;D地址放文件系统#xff0c;等等。 1#xff1a;在内核…分类 Nand 驱动 2011-11-06 23:48 705人阅读 评论(2) 收藏 举报 uboot 与系统内核中 MTD分区的关系 分区只是内核的概念就是说AB地址放内核CD地址放文件系统等等。 1在内核MTD中可以定义分区A~BC~D。。。。。。并且以绝对的地址赋上值。 bootloader中只要能将内核下载到A~B区的A地址开始处就可以C~D区的C起始地址下载文件系统。。。这些起始地址在MTD的分区信息中能找到。 bootloader对分区的概念不重要只要它能把内核烧到A位置把文件系统烧到C位置。 所以在bootloader对Flash进行操作时哪块区域放什么是以内核为主。 而为了方便操作bootloader类似也引入分区的概念如可以使用“nand write 3000000 kernel”命令将uImage烧到kernel分区而不必写那么长nand write 3000000 A …… 这要对bootloader对内核重新分区这需要重新设置一下bootloader环境参数就可以同步更新内核分区信息 如 setenv bootargs noinitrd consolettySAC0 root/dev/mtdblock3 rootfstypejffs2                            mtdpartsnand_flash:128k(u-boot)ro,64k(u-boot envs),3m(kernel),30m(root.jffs2),30m(root.yaffs) 内核配置时选上Device Drivers  --- Memory Technology Device (MTD) support  --- Command line partition table parsing 在设置了mtdparts变量之后,就可以在nand read/write/erase命令中直接使用分区的名字而不必指定分区的偏移位置.而这需要内核MTD最好没有规划分区。 a 。如果你是通过uboot的内核命令行给MTD层传递MTD分区信息这种情况下,内核读取到的分区信息始终和u-boot中的保持一致(推荐的做法) b 。如果你是把分区信息写在内核源代码MTD里定义好的方法,那最好保证它和u-boot中的保持一致,即同步修改uboot及内核的相关部分。   2 内核通过bootargs找到文件系统bootargs中的mtdblockx即代表分区block123代表哪个分区。 事实上,bootargs中的root/dev/mtdblockx只是告诉内核,root fs从第x个(x0,1,2...)MTD分区挂载,mtdblock0对应第一个分区,mtdblock1对应第二个分区,以此类推. 3分区方法 1) MTD层的分区 2) 通过U-boot传递给内核的命令行中的mtdparts... 3) 其他可以让内核知道分区信息的任何办法内核默认的命令参数 下面说到mtdparts及它的用法 mtdparts mtdpartsfc000000.nor_flash:1920k(linux),128k(fdt),20M(ramdisk),4M(jffs2),38272k(user),256k(env),384k(uboot) 要想这个参数起作用内核中的mtd驱动必须要支持即内核配置时需要选上 Device Drivers --- Memory Technology Device (MTD) support --- Command line partition table parsing   mtdparts的格式如下 mtdpartsmtddef[;mtddef] mtddef  : mtd-id:partdef[,partdef]  partdef : size[offset][name][ro]  mtd-id  : unique id used in mapping driver/device size    : standard linux memsize OR - to denote all remaining space name    : (NAME)   因此你在使用的时候需要按照下面的格式来设置 mtdpartsmtd-id:size1offset1(name1),size2offset2(name2)   这里面有几个必须要注意的 a.  mtd-id必须要跟你当前平台的flash的mtd-id一致不然整个mtdparts会失效 b.  size在设置的时候可以为实际的size(xxM,xxk,xx)也可以为-这表示剩余的所有空间。 相关信息可以查看drivers/mtd/cmdlinepart.c中的注释找到相关描述。 U-boot的环境变量值得注意的有两个bootcmd和bootargs。 引用 u      bootcmd    前面有说过bootcmd是自动启动时默认执行的一些命令因此你可以在当前环境中定义各种不同配置不同环境的参数设置然后设置bootcmd为你经常使用的那种参数。 u      bootargs     bootargs是环境变量中的重中之重甚至可以说整个环境变量都是围绕着bootargs来设置的。bootargs的种类非常非常的多我们平常只是使用了几种而已感兴趣的可以看看这篇文章说的很全http://blog.chinaunix.net/u2/79570/showart_1675071.html。bootargs非常的灵活内核和文件系统的不同搭配就会有不同的设置方法甚至你也可以不设置bootargs,而直接将其写到内核中去在配置内核的选项中可以进行这样的设置正是这些原因导致了bootargs使用上的困难。    下面介绍一下bootargs常用参数bootargs的种类非常的多而且随着kernel的发展会出现一些新的参数使得设置会更加灵活多样。   A. root 用来指定rootfs的位置 常见的情况有:     root/dev/ram rw       root/dev/ram0 rw  请注意上面的这两种设置情况是通用的我做过测试甚至root/dev/ram1 rw和root/dev/ram2 rw也是可以的网上有人说在某些情况下是不通用的即必须设置成ram或者ram0但是目前还没有遇到还需要进一步确认遇到不行的时候可以逐一尝试。       root/dev/mtdx rw     root/dev/mtdblockx rw     root/dev/mtdblock/x rw     root31:0x   上面的这几个在一定情况下是通用的当然这要看你当前的系统是否支持不过mtd是字符设备而mtdblock是块设备有时候你的挨个的试到底当前的系统支持上面那种情况下不过root/dev/mtdblockx rw比较通用。此外如果直接指定设备名可以的话那么使用此设备的设备号也是可以的。       root/dev/nfs 在文件系统为基于nfs的文件系统的时候使用。当然指定root/dev/nfs之后还需要指定nfsrootserverip:nfs_dir即指明文件系统存在那个主机的那个目录下面。   B. rootfstype    这个选项需要跟root一起配合使用一般如果根文件系统是ext2的话有没有这个选项是无所谓的但是如果是jffs2,squashfs等文件系统的话就需要rootfstype指明文件系统的类型不然会无法挂载根分区.   C.console consolettyn  使用虚拟串口终端设备n. consolettySn[,options]使用特定的串口noptions可以是这样的形式bbbbpnx这里bbbb是指串口的波特率p是奇偶校验位n是指的bits。 consolettySACn[,options]同上面。       看你当前的环境有时用ttySn有时用ttySACn网上有人说这是跟内核的版本有关2.4用ttySn2.6用ttySACn但实际情况是官方文档中也是使用ttySn所以应该是跟内核版本没有关联的。可以查看Documentation/serial-console.txt找到相关描述。     D. mem memxxM指定内存的大小不是必须的   E. ramdisk_size ramdiskxxxxx          不推荐   ramdisk_sizexxxxx   推荐 上面这两个都可以告诉ramdisk驱动创建的ramdisk的size默认情况下是4m(s390默认8M)你可以查看Documentation/ramdisk.txt找到相关的描述不过ramdiskxxxxx在新版的内核都已经没有提了不推荐使用。   F. initrd, noinitrd 当你没有使用ramdisk启动系统的时候你需要使用noinitrd这个参数但是如果使用了的话就需要指定initrdr_addr,size, r_addr表示initrd在内存中的位置size表示initrd的大小。   G. init init指定的是内核启起来后进入系统中运行的第一个脚本一般init/linuxrc,或者init/etc/preinitpreinit的内容一般是创建console,null设备节点运行init程序挂载一些文件系统等等操作。请注意很多初学者以为init/linuxrc是固定写法其实不然/linuxrc指的是/目录下面的linuxrc脚本一般是一个连接罢了。   H. ip 指定系统启动之后网卡的ip地址如果你使用基于nfs的文件系统那么必须要有这个参数其他的情况下就看你自己的喜好了。设置ip有两种方法  ip ip addr  ipip addr:server ip addr:gateway:netmask::which netcard:off 这两种方法可以用不过很明显第二种要详细很多请注意第二种中which netcard是指开发板上的网卡而不是主机上的网卡。  --------------------------------------------------------------------------------------- 说完常见的几种bootargs那么我们来讨论平常我经常使用的几种组合 1).假设文件系统是ramdisk且直接就在内存中bootargs的设置应该如下 setenv bootargs ‘initrd0x32000000,0xa00000 root/dev/ram0 consolettySAC0 mem64Minit/linuxrc’   2).假设文件系统是ramdisk且在flash中bootargs的设置应该如下 setenv bootargs ‘mem32M consolettyS0,115200 root/dev/ram rw init/linuxrc’ 注意这种情况下你应该要在bootm命令中指定ramdisk在flash中的地址如bootm kernel_addr ramdisk_addr (fdt_addr)   3).假设文件系统是jffs2类型的且在flash中bootargs的设置应该如下 setenv bootargs ‘mem32M consolettyS0,115200noinitrd root/dev/mtdblock2 rwrootfstypejffs2init/linuxrc’   4).假设文件系统是基于nfs的bootargs的设置应该如下 setenv bootargs ‘noinitrd mem64M consolettySAC0 root/dev/nfs nfsroot192.168.0.3:/nfs ip192.168.0.5:192.168.0.3:192.168.0.3:255.255.255.0::eth0:off’ 或者 setenv bootargs ‘noinitrd mem64M consolettySAC0 root/dev/nfs nfsroot192.168.0.3:/nfs ip192.168.0.5’    --------------------------------------------------------------------------------------------------------------------------------------------   1. Uboot没有对Nandflash进行分区通过bootargs参数将file system信息传递给kernel 2. 在kernel中对Nandflash分区信息 arch/arm/mach-s3c6410/mach-smdk6410.c中 struct mtd_partition s3c_partition_info[] {         {                 .name           Bootloader,                 .offset         0,                 .size           (512*SZ_1K),                 /* .mask_flags  MTD_CAP_NANDFLASH, */         },         {                 .name           Kernel,                 .offset         (512*SZ_1K),                 .size           (8*SZ_1M),                 /* .mask_flags  MTD_CAP_NANDFLASH, */         },         {                 .name           File System,                 .offset         (8*SZ_1M 512*SZ_1K),                 .size           (128*SZ_1M),         },         {                 .name           User,                 .offset         MTDPART_OFS_APPEND,                 .size           MTDPART_SIZ_FULL,         } }; struct s3c_nand_mtd_info s3c_nand_mtd_part_info {         .chip_nr 1,         .mtd_part_nr ARRAY_SIZE(s3c_partition_info),         .partition s3c_partition_info, }; 3. 分区信息存放在Nandflash的最后一块
http://www.huolong8.cn/news/288372/

相关文章:

  • 网站建设方案书个人查公司注册信息怎么查
  • 湖北网站建设推荐磁力吧最佳搜索引擎
  • 网站 会员系统 织梦wordpress json 插件安装
  • 南庄营销网站建设肇庆企业做网站
  • 阜宁做网站价格微信小程序下单怎么弄商家
  • 免费制作单页的网站平面设计公司招聘
  • 网站开发如何无感更新东莞厚街劳务事件
  • 外贸建英文网站的重要性郑州网站建设系统介绍
  • 自考免费自学网站小程序登录功能
  • 机械类 网站源码wordpress 表 用户文章
  • 工具网站有哪些有做义工的相亲网站吗
  • 做网站会用到什么语言绍兴网站制作软件
  • 上海网站建设设计公司排名王欣网站建设与维护
  • 广州市官网网站建设深圳网站建设哪个平台好
  • 体检营销型网站美团服务商平台
  • 创建网站的免费软件国内wordpress建好站了打不开首页
  • 一级a做爰电影片免费网站注册网站平台
  • 东莞南海网站制作合肥网站建设模板系统
  • 潍坊网站建设服务商网站服务器租用年度价格
  • 高端定制网站开发原材料价格查询网站
  • 有专业做网站秦皇岛手机网站建设
  • 衡水网站开发四会网站建设
  • ppt模板 网站开发求有颜色的公众号
  • 高端网站设计v芯hyhyk1推好各大网站名称
  • 怎么网站建设公司flash+xml网站模板
  • asp.net 网站登陆设计网站说说模板.
  • 用wordpress建一个网站吗iis建多个网站
  • 自己做pc网站建设深圳调查公司
  • 公司网站设计开发公司多个wordpress用户
  • 电子商务网站设计代做wordpress 安装不上