gk7101
开发准备: 1). 挂在根文件系统的目录 a. 打开文件:/etc/default/tftpd-hpa $sudo vi /etc/exports b. 写入以下内容: /opt/rootfs *(subtree_check,rw,no_root_squash,async) c. 重启服务器 $sudo /etc/init.d/nfs-server-kernel restart 2). 配置tftp远程下载服务: a. 打开文件:/etc/default/tftpd-hpa sudo vi /etc/default/tftpd-hpa b. 写入以下内容: RUN_DAEMON="yes" OPTIONS = "-l -s /tftpboot" 3). 挂载u盘的命令 sudo mount /dev/sdb1 ./mnt一、通过tftp烧写u-boot (前提: nandFlash中已有别人烧写好的u-boot,此时可以通过tftp下载更新) A. linux @cp u-boot.bin /tftpboot B. arm #tftp 0xc1000000 u-boot.bin C. arm #snand erase 0 0x100000 D. arm #snand write 0x40008000 0 0x100000 E.重启开发版二、通过tftp烧写zimage 1. linux @cp u-boot.bin /tftpboot 2. arm #tftp 0xc1000000 zimage //0xc1000000为ddr的某个空的地址 3. arm #snand erase 0x100000 0x300000 //清除nand flash的某个空间 4. arm #snand write 0xc1000000 0x100000 0x300000 //把ddr中的zimage读到nand flash中 //修改环境变量 5. arm #edit bootcmd snand read 0xC1000000 0x100000 0x290000; bootm //bootcmd=run tftpboot 表示从网络启动 6. arm #save三、通过tftp烧写rootfs A. linux @cp squashfs.img /tftpboot B. arm #tftp 0xc1000000 squashfs.img C. arm #snand erase 0x1080000 0xc00000 D. arm #snand write 0xc1000000 0x1080000 0xc00000 //修改环境变量() E. arm #edit bootargs console=ttySGK0 noinitrd root=/dev/mtdblock3 rootfstype=squashfs mem=35m video=gk_fb0:720x480,720x480,8,0 . phytype=1 switch_PRintk=1 sensor=JXH42 wifi=MT7601 rtc=0 acc=0 product=WIFI_DVR version=v1.2.1.4 F. arm #save四、制作根文件系统 a. 制作文件类型 .img 1.编译mkyaffs2image工具 # tar xvf yaffs2-source.tar -C /home/ # cd /home/yaffs2/utils # make # cp mkyaffs2image /usr/bin/ 2.制作根文件系统镜像 $ sudo mkyaffs2image rootfs_glibc rootfs_glibc.img $ sudo cp rootfs_glibc.img /tftpboot b.cramfs文件系统镜像制作五、 1 .a //为静态库 2 $du -sh lib //查看目录的大小 3 $arm-none-linux-gnceabi-strip lib/* */ 4 错误提示:启动开发板时打印的信息 jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00380000: 0x23c2 instead 解决:flash清除多余的分区四、分区大小 测试时使用的分区信息如下 (kernel 中 gk7101_spinand.c ) static struct mtd_partition gk7101_spinand_partitions[ ] = { //392k [0] = { .name = "uboot", .offset = 0x00000000, .size = 0x00060000, }, //128K [1] = { .name = "ubootenv", .offset = 0x00060000, .size = 0x00020000, }, //3M [2] = { .name = "kernel", .offset = 0x00100000, .size = 0x00300000, }, //112M [3] = { .name = "rootfs", .offset = 0x01080000, .size = 0x06f80000, }, //128k [4] = { .name = "update", .offset = 0x00f60000, .size = 0x00020000, }, //1M [5] = { .name = "sysinfo", .offset = 0x00f80000, .size = 0x00100000, }, //11M [6] = { .name = "unused", .offset = 0x00400000, .size = 0x00b60000, }, };新闻热点
疑难解答