Hi3559a sdk环境搭建

Hi3559a sdk环境搭建

本文为作者开发学习中的总结和整理,希望对有需要的同学有所帮助。

编译环境

   推荐64bit linux
   推荐ubuntu14.04 gcc4.82

   自行配置网络 安装nfs samba ssh等相关组件

  1. 使用bash
    sudo dpkg-reconfigure dash 选择not
  2. 软件包
    sudo apt-get install make libc6:i386 lib32z1 lib32stdc++6 zlib1g-dev libncurses5-dev ncurses-term libncursesw5-dev g++ u-boot-tools:i386 texinfo texlive gawk
  3. 创建/etc/ld.so.preload 执行 echo “” > /etc/ld.so.preload
  4. 安装交叉编译器
    glibc ,aarch64(ES sdk使用hisiv-610,CS sdk使用 himix100),arm-none-eabi
  5. 替换64位工具
    64bit系统需拷贝tools/pc/mkimage_tool/mkimage到 /usr/bin下
  6. 环境变量
    source /etc/profile

   编译参考:osdrv说明文档.txt

Hi3559a代码结构

   ├── Code
   │ ├── drv
   │ ├── mpp
   │ ├── osal
   │ ├── osdrv
   │ │ ├── components
   │ │ ├── Makefile
   │ │ ├── opensource
   │ │ │ ├── arm-trusted-firmware
   │ │ │ ├── busybox
   │ │ │ ├── kernel
   │ │ │ └── uboot
   │ │ ├── osdrv_mem_cfg.sh
   │ │ ├── platform
   │ │ ├── readme_cn.txt
   │ │ ├── readme_en.txt
   │ │ ├── rootfs_scripts
   │ │ └── tools
   │ ├── package
   │ ├── scripts
   │ ├── sdk.cleanup
   │ └── sdk.unpack
   ├── downloadcode

Hi3559a sdk文档中术语描述

   multi-core版本为单系统a73mp+a53mp版本
   big-little版本为双系a73mp+a53mp版本 sample.bin为liteos测

   编译(A53MP+A73MP)多核linux+A53UP单核liteos、启动介质为emmc的命令:
   make BOOT_MEDIA=emmc AMP_TYPE=linux_liteos all

固件下载

   如果您拿到的单板没有uboot,就需要使用HiTool 工具进行烧写。HiTool 工具位置放在Hi3559A***/01.software/pc/HiTool,使用说明请参见该目录下的《HiBurn工具使用指南》。
   如果您拿到的单板中已经有uboot,可以按照以下步骤使用网口烧写uboot、kernel及rootfs到Flash 中。
   本章所有的烧写操作都在DEMO 板上的串口座上进行。

   具体操作:

  1. 配置tftp 服务器
    在window pc 端安装一个tftp 服务即可

  2. 参数配置
    pc端:板卡端网口连线pc 端网口,pc端IP设为serverip 一致,关闭防火墙。
    板卡端:单板上电后,敲任意键进入u-boot。
    设置serverip(即tftp 服务器的ip)、ipaddr(单板ip)和ethaddr(单板的MAC 地址)。
    setenv serverip xx.xx.xx.xx
    setenv ipaddr xx.xx.xx.xx
    setenv ethaddr xx:xx:xx:xx:xx:xx
    setenv netmask xx.xx.xx.xx
    setenv gatewayip xx.xx.xx.xx
    ping serverip,确保网络畅通。
    例:
    setenv serverip 192.168.1.20
    setenv ipaddr 192.168.1.10
    setenv ethaddr 00:00:00:00:00:B1
    setenv netmask 255.255.255.0
    setenv gatewayip 192.168.1.1
    saveenv
    成功log:
    hisilicon # ping 192.168.1.20
    ETH0: PHY(phyaddr=1, rgmii) link UP: DUPLEX=FULL : SPEED=1000M
    MAC: 00-00-00-00-00-B1
    Using gmac0 device
    host 192.168.1.20 is alive

  3. 烧写版本映像文件到Flash
    以下所有烧写地址仅供参考,以开发者sdk版本及实际设计为准
    a. 地址空间说明
    地址分配参考每版sdk文档
    | 1M | 9M | 32M | 16M | 1M |
    |-----------|--------------|------------|--------------------|---------------|
    | uboot | linux kernel | rootfs | A53UP LiteOS | M7 LiteOS |
    b. 拨码选择主CPU
    通过拨码开关SW1.4 设置选择主CPU:
    0:从A53MP Core0 启动;
    1:从A53UP 启动。
    c.spi nand烧写
       烧写u-boot
         mw.b 0x52000000 0xff 0x100000
         tftp 0x52000000 u-boot-hi3559av100.bin
         nand erase 0 0x100000
         nand write 0x52000000 0 0x100000
       烧写Linux内核
         mw.b 0x52000000 0xff 0x1000000
         tftp 0x52000000 uImage_hi3559av100_big-little
         nand erase 0x100000 0x900000
         nand write 0x52000000 0x100000 0x900000
       烧写文件系统
         mw.b 0x52000000 0xff 0x2000000
         tftp 0x52000000      rootfs_hi3559av100_2k_24bit.yaffs2
         (注:此示例Flash 为2KPage 24bitECC,应以实际使用器件选择相应rootfs)
         nand erase 0xA00000 0x2000000
         nand write.yaffs 0x52000000 0xA00000 0xd32c00
         (注:nand write.yaffs 的最后一个参数(size),应该以实际下载的rootfs 长度为准如打印:“Bytes transferred = 13839360 (d32c00 hex)”,则为:0xd32c00)
       烧写A53UP Huawei LiteOS
         mw.b 0x52000000 0xff 0x1000000
         tftp 0x52000000 sample_vio.bin
         nand erase 0x2A00000 0x1000000
         nand write 0x52000000 0x2A00000 0x1000000
       烧写Cortex-M7 Huawei LiteOS (此步选做)
         mw.b 0x52000000 0xff 0x100000
         tftp 0x52000000 sample.bin
         nand erase 0x3A00000 0x100000
         nand write 0x52000000 0x3A00000 0x100000
       设置启动参数
         setenv bootargs ‘mem=512M console=ttyAMA0,115200 clk_ignore_unused rw root=/dev/mtdblock2 rootfstype=yaffs2 mtdparts=hinand:1M(boot),9M(kernel),32M(rootfs)’; sa
       不启动Cortex-M7
         setenv bootcmd ‘nand read 0x45000000 0x2A00000 0x1000000; go_a53up 0x45000000; nand read 0x52000000 0x100000 0x900000;bootm 0x52000000’; sa
       带Cortex-M7启动
         setenv bootcmd ‘nand read 0x45000000 0x2A00000 0x1000000; go_a53up 0x45000000; config_m7; nand read 0x19000000 0x3A00000 0x100000; go_m7; nand read 0x52000000 0x100000 0x900000;bootm 0x52000000’; sa
       重启系统
         reset
    emmc烧写
       uboot
         mw.b 0x41000000 0xff 0x100000
         tftp 0x41000000 u-boot-hi3559av100.bin
         mmc write 0x0 0x41000000 0x0 0x1c0
       内核uImage_hi3559av100_big-little
         mw.b 0x41000000 0xFF 0x825800
         tftp 0x41000000 uImage_hi3559av100_big-little
         mmc write 0x0 0x41000000 0x800 0x412c
       根文件rootfs_hi3559av100_96M.ext4
         mw.b 0x41000000 0xFF 0x1135a00
         tftp 0x41000000 rootfs_hi3559av100_96M.ext4
         mmc write.ext4sp 0x0 0x41000000 0x5000 0x30000
       sample_vio.bin
         mw.b 0x41000000 0xFF 0x619600
         tftp 0x41000000 sample_vio.bin
         mmc write 0x0 0x41000000 0x35000 0x30cb
       设置启动参数
         setenv bootargs ‘mem=512M console=ttyAMA0,115200 root=/dev/mmcblk0p3 rw rootwait rootfstype=ext4 blkdevparts=mmcblk0:1M(boot),9M(kernel),96M(rootfs)’
    setenv bootcmd ‘mmc read 0x0 0x45000000 0x35000 0x30cb; go_a53up,0x45000000; mmc read 0x0 0x41000000 0x800 0x412c;bootm 0x41000000’; sa
       重启
         reset

  4. 系统启动
    单系统reset可正常启动,下面是双系统启动方法
    a. linux启动后,linux侧挂在sdcard
    将mpp/out/linux/big-littes/ko目录放至sdcard中
    mount -t vfat /dev/mmcblk0p1 /mnt
    cd /mnt/ko
    或者直接把ko做到rootfs中
    cd /komod/ko
    insmod hi_ipcm.ko
    insmod hi_virt-tty.ko
    ./loadhi3559av100_bl –i
    b.开启telnet(开启方法见网上)
    linux测配置ip地址 ifconfig eth0 192.168.x.x
    linux uart串口输入 telnetd &
    telnet端口输入 telnet 192.168.x.x
    login:root
    password直接回车
    virt-tty a53

你可能感兴趣的:(Hi3559a sdk环境搭建)