单片机
返回首页

开发环境搭建 (一) OK6410A 开发环境 4 更改环境 OK

2022-09-27 来源:csdn

从sd卡中 的 u-boot(1.1.6) 启动


u-boot load sd卡中 第1个分区(被格式化为fat16)的kernel(4.0),然后kernel 启动. // 如果要一个分区格式化为fat16,则这个分区的大小不能超过 2GB 


kernel 挂载 sd卡中的第2个分区(被格式化为ext3)为根文件系统,并执行 /linuxrc


/linuxrc 作为 进程1 启动


u-boot 与 启动模式


uboot(1.1.6) 的配置 forlinx_sd_ram256_config


uboot镜像通过 SD_Writer.exe 写入到sd卡中(写入步骤参考附录)


sd卡分区1(从0开始,32M),fat16,存储kernel ,  setenv bootcmd fatload mmc 0:1 0x50008000 zImage; bootm 0x50008000

也就是说 uboot 有 fat16 文件系统及mmc驱动,且有 fatload 命令


kernel

分区1(从0开始,32M),fat16,存储kernel ,  setenv bootcmd fatload mmc 0:1 0x50008000 zImage; bootm 0x50008000

也就是说 uboot 有 fat16 文件系统及mmc驱动,且有 fatload 命令

uboot(1.1.6) 的配置 forlinx_nand_ram256_config


分区2(从32M开始,到末尾前2M),ext4 , 存储rootfs , setenv bootargs console=tty0 console=ttySAC0 root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait earlyprintk

也就是说 kernel  有 ext4 文件系统及mmc驱动


rootfs

---------------------------以下为改动地方


rootfs(ext3格式,未压缩7.8M,压缩后3.5M) ,参照https://github.com/lisider/busybox 的 ok6410-a 分支

rootfs 在 sd卡(sd卡共一个主分区,该主分区被格式化为ext3)中

rootfs 中 图形支持为 NULL


rootfs 中的 /etc/init.d/rcS 中添加一句 mount /dev/mmcblk0p1  /boot (首先在根文件系统中创建/boot目录)


需要命令

sudo fdisk -l /dev/sdb // 在ubuntu 插入sd卡,显示为 /dev/sdb,然后交互创建分区

sudo mkfs.ext3 /dev/sdb1 // 格式化该分区为 ext3 格式


sudo mount -t ext3 /dev/sdb1  /mnt // 挂载文件系统


sudo cp rootfs/*  /mnt  // 在文件系统中填充根文件系统所需内容.rootfs内容的创建需要参考 https://github.com/lisider/busybox 的 ok6410-a 分支


sudo umount /mnt/ 卸载文件系统


附录

烧写uboot到mmc

32G的sd卡,

根据 OK6410-A开发板LINUX3.0.1-2014-09用户手册.pdf 中的  '12-13 SD卡分区操作说明'

先烧写uboot 到 sd 卡成功

--------------------------------------也可以用以下脚本来烧写uboot到sd卡


注意:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

本脚本适合 ok6410 ,且 u-boot 为 飞凌嵌入式发布的 u-boot-1.1.6

若 基于 ok6410 ,且 u-boot 为版本

可尝试修改 BL2_SECTOR_NUMBER 为 1024

可尝试修改 ENV_SECTOR_NUMBER

注意:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

#!/bin/bash


# TODO : 更改 sdd 为 你的sd卡设备名

# TODO : 分区时 请勿将 (3. 剩余未分区(62409166-62410752),用于u-boot)部分 分区

# usage : ./do.sh u-boot.bin



if [ $# -eq 0 ];then

    echo usage : ./do.sh u-boot.bin

    exit -2

fi


############################### STEP0 分区


#sd卡32G,62410752个sector

#    1. 512M 分区 (2048-1050623),用于zImage,fat16 // /dev/sdd1            2048     1050623      524288   83  Linux

#    2.      分区 (1050624-62409165) ,用于rootfs,ext3

#    3. 剩余未分区(62409166-62410752),用于u-boot


# 62409166-62410752(最后一个sector) 排布


# |________________|________|________|______________|______________|(END)                   

# BL2(512个sector)  ENV(32) BL1(16)  signature(1)   Reserved(1025) 


############################### STEP0.5 制作文件系统


#sudo mkfs.vfat -F 16 /dev/sdd1

#sudo mkfs.ext3  /dev/sdd2


############################### STEP1 u-boot


boot=$1


[ ! -e /dev/sdd ] && echo /dev/sdd not exist && exit -1


BYTES_PRE_SECTOR=512


let ALL_SECTOR_NUMBER=`sudo fdisk -l /dev/sdd | head -2 | tail -1 | awk -F ' ' '{print $7}'`

let Reserved_SECTOR_NUMBER=1025

let Signature_SECTOR_NUMBER=1

let BL1_SECTOR_NUMBER=16

let ENV_SECTOR_NUMBER=32

let BL2_SECTOR_NUMBER=512


BL1_SECTOR_START_ADDR=`echo  ${ALL_SECTOR_NUMBER} - ${Reserved_SECTOR_NUMBER}- ${Signature_SECTOR_NUMBER} - ${BL1_SECTOR_NUMBER} | bc`

BL2_SECTOR_START_ADDR=`echo ${BL1_SECTOR_START_ADDR} - ${ENV_SECTOR_NUMBER} - ${BL2_SECTOR_NUMBER} | bc`


echo ALL_SECTOR_NUMBER     : ${ALL_SECTOR_NUMBER}

echo BL1_SECTOR_START_ADDR : ${BL1_SECTOR_START_ADDR}

echo BL2_SECTOR_START_ADDR : ${BL2_SECTOR_START_ADDR}



if [ -f ${boot} ];then

    rm ./bl1.bin ./bl2.bin -f

    sudo dd if=./${boot} of=./bl1.bin bs=${BYTES_PRE_SECTOR} count=${BL1_SECTOR_NUMBER}

    cp ./${boot} ./bl2.bin

fi


sudo dd if=./bl1.bin of=/dev/sdd seek=${BL1_SECTOR_START_ADDR} bs=${BYTES_PRE_SECTOR} count=${BL1_SECTOR_NUMBER}

sudo dd if=./bl2.bin of=/dev/sdd seek=${BL2_SECTOR_START_ADDR} bs=${BYTES_PRE_SECTOR} count=${BL2_SECTOR_NUMBER}


烧写 kernel 和 rootfs 到 mmc

目前sd卡为 一个分区(接近32G) + 一个未分区(接近20M)

然后将 用分区助手专业版 将 fat32分区分成两个分区 (512M + 31.5G)

然后把 512M 所在的分区 格式化为 fat16,并将 zImage 拷贝到这里

然后把 31.5G 所在的分区 格式化为 ext3 , 并将 rootfs文件拷贝到这里


分区助手

链接:https://pan.baidu.com/s/1lgRcwzQd_xaWFGp9xYeiCQ 

提取码:nsp0

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 红外线探测报警器

  • 短波AM发射器电路设计图

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 用NE555制作定时器

  • 带有短路保护系统的5V直流稳压电源电路图

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章