东山pi壹号学习记录(1)

开发板介绍

硬件描述

  • 主控芯片: 星辰科技 SSD202D 内置128MB DDR 支持H264/H265解码 支持MJPG编码。
  • 存储:板载128MB SPI NAND FLASH芯片 以及专门的SD card接口
  • LED灯:红色x1 表示pwr 蓝色 绿色 均为用户灯。
  • Key:硬件复位按键x1 用户按键x1
  • 显示:50Pin FPC RGB888显示输出
  • 供电&调试:板载专用USB转TTL芯片同时给整个板子供电。
  • usbHost: TypeC接口的USB HOST 支持连接支持USB协议的设备。
  • 扩展接口: 使用MINI-PCI-E接口 用于连接底板。

开发资源描述

名称介绍
boot存放适配好的uboot的源码
kernel存放适配好的linux kernel的源码
project主要用于打包可供升级的image包
sdk存放一些简单的demo code

开发环境搭建

基于Ubuntu18.04

1、SDK编译tool1

tool安装

sudo apt-get install -y libc6-dev-i386 lib32z1 lib32ncurses5 libuuid1:i386 cmake libncurses5-dev libncursesw5-dev bc xz-utils automake libtool libevdev-dev pkg-config openssh-server repo

修改sh为bash

sudo rm /bin/sh
sudo ln –s /bin/bash /bin/sh

2、源码获取

使用repo管理多个git仓库,

git clone https://e.coding.net/codebug8/repo.git
mkdir DongshanPiOne-TAKOYAKI  && cd  DongshanPiOne-TAKOYAKI
../repo/repo init -u  https://gitee.com/weidongshan/manifests.git -b linux-sdk -m  SSD202D/dongshanpi-one_takoyaki_dlc00v030.xml --no-repo-verify
../repo/repo sync -j4

获取成功后的源码目录结构如下

book@virtual-machine:~/DongshanPiOne-TAKOYAKI$ tree -L 1
.
├── boot   //使用的是uboot-2015  主要用于烧写引导kernel启动。
├── DevelopmentEnvConf  //自动配置开发环境的一些脚本文件
├── gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf   //交叉编译工具链。
├── kernel  //使用4.9.88版本的内核
├── project  //根文件系统和应用相关源码,主要包含了 编译构建根文件系统 APP 并自动打包生成合适的格式用来烧写。
└── sdk  

3、配置编译环境

设置交叉编译工具链
修改 ~/.bashrc 在行尾添加

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
export PATH=$PATH:/home/book/DongshanPiOne-TAKOYAKI/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf/bin

添加完成后执行

source ~/.bashrc

验证交叉工具链

arm-linux-gnueabihf-gcc -v
Using built-in specs.
COLLECT_GCC=arm-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/home/book/DongshanPiOne-TAKOYAKI/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf/bin/../libexec/gcc/arm-linux-gnueabihf/8.2.1/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: /tmp/dgboter/bbs/bc-b1-2-11--rhe6x86_64/buildbot/rhe6x86_64--arm-linux-gnueabihf/build/src/gcc/configure --target=arm-linux-gnueabihf --prefix= --with-sysroot=/arm-linux-gnueabihf/libc --with-build-sysroot=/tmp/dgboter/bbs/bc-b1-2-11--rhe6x86_64/buildbot/rhe6x86_64--arm-linux-gnueabihf/build/build-arm-linux-gnueabihf/install//arm-linux-gnueabihf/libc --enable-gnu-indirect-function --enable-shared --disable-libssp --disable-libmudflap --disable-libsanitizer --enable-checking=release --enable-languages=c,c++,fortran --with-gmp=/tmp/dgboter/bbs/bc-b1-2-11--rhe6x86_64/buildbot/rhe6x86_64--arm-linux-gnueabihf/build/build-arm-linux-gnueabihf/host-tools --with-mpfr=/tmp/dgboter/bbs/bc-b1-2-11--rhe6x86_64/buildbot/rhe6x86_64--arm-linux-gnueabihf/build/build-arm-linux-gnueabihf/host-tools --with-mpc=/tmp/dgboter/bbs/bc-b1-2-11--rhe6x86_64/buildbot/rhe6x86_64--arm-linux-gnueabihf/build/build-arm-linux-gnueabihf/host-tools --with-isl=/tmp/dgboter/bbs/bc-b1-2-11--rhe6x86_64/buildbot/rhe6x86_64--arm-linux-gnueabihf/build/build-arm-linux-gnueabihf/host-tools --with-arch=armv7-a --with-fpu=neon --with-float=hard --with-arch=armv7-a --with-pkgversion='GNU Toolchain for the A-profile Architecture 8.2-2018-08 (arm-rel-8.23)'
Thread model: posix
gcc version 8.2.1 20180802 (GNU Toolchain for the A-profile Architecture 8.2-2018-08 (arm-rel-8.23))

Boot编译烧写

1、boot编译

进入boot目录下

make infinity2m_spinand_defconfig
make -j8

生成的镜像文件

u-boot_spinand.xz.img.bin

注意:如果需要打包 编译出来的镜像到最终的完整系统内则 需要讲生成的文件拷贝到project目录:

cp u-boot_spinand.xz.img.bin project/board/i2m/boot/spinand/uboot/

2、烧写

1)使用Uboot烧写

这种烧写方式是在您的开发板还可以正常启动,可以进入到uboot命令行内。
首先将编译好的镜像拷贝到sd卡内, 之后开发板上电,在串口有输出时一直长按键盘 Enter 键3秒左右 之后放开就可以进入到开发板显示Sigma时即进入uboot命令行, 最后执行如下命令更新。

fatload mmc 0:1 0x21000000 u-boot_spinand.xz.img.bin
nand erase.part UBOOT0
nand write.e 0x21000000 UBOOT0 ${filesize}
nand erase.part UBOOT1
nand write.e 0x21000000 UBOOT1 ${filesize}

2)使用外部工具烧写

将烧写工具连接好烧录线后,将烧录器和开发板烧写接口连接好,拨码开关切换为烧写模式(拨码开发白色拨码切换到非NO方向)。

之后我们按下 主板上Reset键,同时执行如下烧写命令,其中第一句话sudo SNANDer -p mstarddc -c /dev/i2c-0:49 -e是整个 擦除 flash 命令,建议执行。
烧写操作是在ubuntu-18烧写,需要将烧写工具挂载到ubuntu系统内,挂载成功后系统会自动装在驱动模块,此时设备管理器会多出一个/dev/i2c-0的设备节点,其中烧写命令中 -l参数指定的是烧写文件的长度(大小),如果你修改了u-boot_spinand.xz.img.bin文件,请确认大小是否在这个区间内。

sudo SNANDer -p mstarddc -c /dev/i2c-0:49 -e
sudo SNANDer -p mstarddc -c /dev/i2c-0:49 -w GCIS.bin
sudo SNANDer -p mstarddc -c /dev/i2c-0:49 -a 0x140000 -l 0x6000 -w IPL.bin
sudo SNANDer -p mstarddc -c /dev/i2c-0:49 -a 0x200000 -l 0x5800 -w IPL_CUST.bin
sudo SNANDer -p mstarddc -c /dev/i2c-0:49 -a 0x2C0000 -l 0x3B800 -w u-boot_spinand.xz.img.bin

Kernel编译烧写

1、Kernel编译

进入kernel根目录

make infinity2m_spinand_ssc011a_s01a_minigui_defconfig;
make clean
make -j8

NandFlash镜像文件

arch/arm/boot/uImage.xz

如果需要将编译出来的镜像最终打包放到一个完整的镜像内需要拷贝到project目录:

project\release\nvr\i2m\011A\glibc\8.2.1\bin\kernel\spinand

2、Kernel烧写

uboot内烧写

首先将编译好的镜像拷贝到sd卡内, 之后开发板上电,在串口有输出时一直长按键盘 Enter 键3秒左右 之后放开就可以进入到开发板显示Sigma时即进入uboot命令行, 最后执行如下命令更新。

fatload  mmc 0:1  0x21000000 uImage.xz
nand erase.part KERNEL
nand write.e 0x21000000 KERNEL ${filesize}
nand erase.part RECOVERY
nand write.e 0x21000000 RECOVERY ${filesize}

系统编译烧写

1、系统编译

进入project根目录下

./setup_config.sh ./configs/nvr/i2m/8.2.1/spinand.glibc.011a.128
make image

生成image,目录:

project/image/output/images 

拿到生成的image后,参照烧录文档/母片制作文档烧录到板子即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值