美文网首页
FROG-01-开发环境和编译烧录

FROG-01-开发环境和编译烧录

作者: A红豆爸爸 | 来源:发表于2023-04-24 20:07 被阅读0次

FROG项目培训文档系列之01    

开发环境和编译烧录


本章内容包括:

1.Genbox安装准备

2.安装Genbox环境

3.运行Genbox

4.安装配置平台release

5.使用prebuilt安装rootfs

6.如何编译你修改的软件包

6.烧录到板

7.生成可写rootfs文件系统


开始本章之前,请确保Ubuntu14.04系统已经安装

Genbox即是Frog系统的交叉编译环境也是集成环境。

https://devmanual.gentoo.org/ 官方开发手册

It manages its own packages, controls the execution environment and guarantees the stability and reproducibility of the embedded-system building process.The Genbox cross-compilation environment is composed of two parts:

- the compilation environment which appears as a “squashfs” image (file structure on your disk),

- the management script to download, install and run this image.

1.Genbox安装准备

To use the Genbox, you need GitHub SSH credentials and a Frog authentication token. You also need to link your Frog and GitHub accounts.

Supported platforms : Ubuntu 14.04

Required packages

1).Install the squashfstools package:

sudo apt-get install squashfs-tools

2).Check that the openssh and openssh-client packages are installed.

sudo apt-get install ssh

sudo apt-get install openssh-server

sudo apt-get install openssh-client

3).Prepare your SSH and Github credentials.

    The Genbox requires you to use SSH to connect to Github.

      ssh-keygen -t rsa -b 4096 -C "wang2@qq.com"

       Make sure the SSH agent is active:

         ps aux |grep ssh-agent

      Should return something like:

user      1311  0.0  0.0  2300  288 ?        Ss  11:28  0:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session /usr/bin/im-launch gnome-session --session=ubuntu

If not, launch a new SSH agent:

eval $(ssh-agent -s)

ssh-add ~/.ssh/id_rsa

ssh -T git@github.com

Make sure SSH_AUTH_SOCK is set to a path shared between the development computer and the Genbox (for instance, /tmp):

   sudo gedit  /etc/sudoers

    add a line:

        Defaults env_keep+=SSH_AUTH_SOCK

        echo $SSH_AUTH_SOCK

      it Should return something like:

        /tmp/ssh-U1B7SaDJibVF/agent.3188

2.安装Genbox环境

        You can enter genbox using:

          sudo /genbox/bin/genbox-ng

          Create an alias to run the Genbox, and store it in your ~/.bashrc file:

             echo 'alias run-genbox="sudo /genbox/bin/genbox-ng"' >> ~/.bashrc

               echo 'alias run-genbox="sudo /home/work/genbox/bin/genbox-ng"' >> ~/.bashrc

          下次重启后直接运行run-genbox即可启动genbox

3.运行Genbox

     sudo /genbox/bin/genbox-ng

   (最近Frog网站申请的账号,令牌包含非十六进制字符,此时会提示无效令牌,先忽略此问题,等安装完成后用其他命令重新设置

           ssh -T git@github.com

        申请的Frog令牌有包含非16进制的字符,在第一次配置genbox的时候回提示无效的令牌

           通过以下的方法fix:

          emerge --sync

         emerge frog-config

         emerge --config sys-config/frog-config

         此处重新输入令牌配置成功

4.安装配置平台release

先注意一下几点:

1)../clone_gitsrv.sh此步从网络下载软件包太慢,可以将文件夹里已经下载打包好的frogbywyplay.tgz放在release文件夹下,不用重复下载,直接执行/tmp/release/init_genbox.sh即可

2).执行/tmp/release/release_setup.sh /tmp/release完成后,删除linux.git .用文件夹下linux.git替换,新的linux.git包含新增加我们用的平台的flash driver

    rm -frv /git/his/linux.git

    cp -frv ./linux.git /git/his/

3).执行以下两步,做一次完整编译,用prebuild不能把新flash driver编译进去

    xtarget -c -v -d prebuilt_dvbc -a hi3716m42dmb =product-targets/me-4.4.3.11

    xmerge world

4)./script/mk_ubi_img.sh 生成image升级系统(直接跳过以下第5步使用prebuilt安装rootfs)

5.使用prebuilt安装rootfs

Frog provide one or several prebuilt rootfs, or prebuilt, that you install and manage in the Genbox through xtarget command.

1).Ensure that your overlays are up-to-date, so that the list of available prebuilts is accurate as well:

xtarget --sync

The --sync command updates the /usr/local/portage/targets repository

2).Listing the prebuilts available for installation

xtarget --list-profiles --verbose

xtarget -pv

3).Installing a prebuilt rootfs

      USE=prebuilt xtarget -c -v -d prebuilt_dvbc -a hi3716m42dmb =product-targets/me-4.4.3.11

xtarget installs a complete rootfs in /usr/targets/prebuilt_dvbc /root.

--dir option tells xtarget that the new target will be installed under /usr/targets/frog.

If you do not add dir option, xtarget creates the new target under                                                 /usr/targets/- directory.

xtarget just processes an ebuild from the “targets” overlay (in /usr/local/portage/targets).

            This target ebuild simply installs configuration files necessary to build a complete rootfs.

5).Listing the installed prebuilt

xtarget -lv

6).Setting the prebuilt as the default target

xtarget --set prebuilt_dvbc

Setting a default target creates a symlink named /usr/targets/current pointing to /usr/targets/

Managing packages in a target rootfs

Genbox is derived from Gentoo, hence Portage is used in order to build a component. This chapter is a quick Portage overview, so I advise you to also have a look at Gentoo Portage official documentation.

ActionCommand

Search for packages with foo pattern in its name [1]xmerge --search foo

Install foo package (and its dependencies if missing) [2]xmerge foo

Install foo dependencies but not foo package itselfxmerge --onlydeps foo

Update Portage tree and its overlays [3]xmerge --sync

Update all installed packages [4]xmerge --update --deep world

Remove foo packagexmerge --unmerge foo

Remove orphaned dependencies [5]xmerge --depclean

Special use cases:

Using a regular expression for package search

You can enable a regular expression search by prefixing the search string with %.

For example:

xmerge --search "%^foo"

searches for any package whose name starts with “foo”.

package version to install. To install a specific package version:

xmerge '=sys-apps/busybox-1.4.1-r13'

To preview what would be installed without really installing packages:

xmerge --pretend --verbose

To preview what will be installed before installing packages:

xmerge --ask --verbose

6.如何编译你修改的软件包 (方法一致,以frog-ui为例)

This page explains how to retrieve an existing package, modify its code and integrate it in a target rootfs.

1.首先找到你要编辑的软件包的ebuild文件在哪里

The component is already installed in the target rootfs:

  xexec equery which frog-ui

this command has the advantage to display the exact desired result

The component is not installed in the target rootfs yet:

  xmerge --search frog-ui

  xmerge - frog-ui

the line beginning with “Path” to get the ebuild’s path.

  /usr/targets/prebuilt_dvbc/portage/frog/media-gfx/frog-ui/frog-ui-1.1.31.5.ebuild

2.获取软件包的源代码

  因为之前全部编译后源代码会自动删除,这里需要重新从git库获取

  在git库中的branch和版本号,在ebuild文件中设置

    EGIT_BRANCH:="1.1.31-stable"

    EGIT_REVISION:="asa11********"

xbuild /usr/targets/prebuilt_dvbc/portage/frog/media-gfx/frog-ui/frog-ui-1.1.31.5.ebuild clean

xbuild  /usr/targets/prebuilt_dvbc/portage/frog/media-gfx/frog-ui/frog-ui-1.1.31.5.ebuild unpack

clean会清除xbuild /usr/targets/prebuilt_dvbc/portage/frog/media-gfx/下面的frog-ui文件夹下所有内容。所以在你的改动push到git origin之前不要执行,不然改动丢失。

unpack会从/git/frogbywyplay/app_frog-ui.git库clone源代码到work目录

The unpack action indicates where to find the component sources, here in :

    /usr/targets/prebuilt_dvbc/work/media-gfx/frog-ui-1.1.31.5/work/frog-ui-1.1.31.5

3.修改代码,执行编译安装命令:

xbuild /usr/targets/current/portage/wms/dev-libs/wylog/wylog-1.2.4.ebuild compile

>>> Compiling source in     /usr/targets/.../work/dev-libs/wylog-1.2.4/work//frog-ui-1.1.31.5 ...

* Running eautoreconf in     '/usr/targets/.../work/dev-libs/wylog-1.2.4/work//frog-ui-1.1.31.5...

* QA Warning: running aclocal in compile phase

* Running aclocal …

[...]

>>> Source compiled.

xbuild /usr/targets/current/portage/wms/dev-libs/wylog/wylog-1.2.4.ebuild  install

4.将生产的binary文件合并到default target rootfs:

  xbuild /usr/targets/current/portage/wms/dev-libs/wylog/wylog-1.2.4.ebuild install qmerge

5 ./script/mk_ubi_img.sh 生成image升级系统,测试

6.测试OK后,推送到remote git库保存.

6.烧录到板,硬件连接

平台和电视用HDMI线连接.

平台和电脑连接在同一个路由器,组成局域网内

用USB串口将板子串口和电脑连接,安装好驱动

机顶盒平台接上DVB信号线

连接机顶盒平台电源

执行./script/mk_ubi_img.sh 后会在当前的target root下生成:

/usr/target/current/root/boot/uImage

/usr/target/current/root/img/ubi.img

1.将上面两个文件copy到tmp文件夹下,exit genbox环境,复制到U盘。

2.将uImage,ubi.img和partitions_nand.xml分区表xml文件放在同一个文件夹下。

3.打开烧录工具hitools

烧录需要配置好串口和网络,串口选择你正在用的端口,如果是多网卡,选择局域网卡IP

板端配置默认即可

传输方式选默认网口

选择文件夹下的分区表文件,即partitions_nand.xml,下面会自动流出升级对应分区文件

勾选需要升级的分区即可,比如frog-ui只需要升级rootfs即可

4,配置OK后点击烧录,板子断电重启,即可自动升级后重启完成。

7.生成可写rootfs文件系统

以下方法可以生产可写的roorfs文件系统,方法修改板子上的文件设置和替换更新模块

1)修改/script/mk_ubi_img.sh中关于roofs_ubifs配置

vol_type修改为dynamic

vol_size设置为100M

[roofs_ubifs]

mode=ubi

image=ubifs.img

vol_id=0

vol_size=100MiB

vol_type=dynamic

vol_name=rootfs

2)执行/script/mk_ubi_img.sh,生成image升级系统

3)开机启动后按住ctrl+c,进入fastboot模式,将启动参数设置为rw

fastboot# print

bootdelay=1

baudrate=115200

ethaddr=00:00:00:00:00:00

ipaddr=192.168.1.10

serverip=192.168.1.1

netmask=255.255.255.0

bootfile="uImage"

bootargs_512M=mem=512M mmz=ddr,0,0,256M

bootargs_1G=mem=1G mmz=ddr,0,0,380M

bootargs_2G=mem=2G mmz=ddr,0,0,600M

bootargs=console=ttyAMA0,115200 ubi.mtd=6 root=ubi0:rootfs rootfstype=ubifs mem=512M mmz=ddr,0,0,256M mtdparts=hinand:1M(boot),1M(bootargs),1M(baseparam),1M(pqparam),1M(logo),8M(kernel),-(rootfs) ro rootwait // 这里ro需要改为rw

bootcmd=nand read 1000000 500000 800000;bootm 1000000

stdin=serial

stdout=serial

stderr=serial

ethact=up

ver=Fastboot 3.3.0-dirty (dwx443370@fish) (Mar 16 2017 - 20:11:30)

Environment size: 627/65532 bytes

敲如下命令重洗设置可写启动参数:

set bootargs 'console=ttyAMA0,115200 ubi.mtd=6 root=ubi0:rootfs rootfstype=ubifs mem=512M mmz=ddr,0,0,256M mtdparts=hinand:1M(boot),1M(bootargs),1M(baseparam),1M(pqparam),1M(logo),8M(kernel),-(rootfs) rw rootwait'

然后执行save命令保存。

4)启动系统后,文件系统即是可写的。

相关文章

网友评论

      本文标题:FROG-01-开发环境和编译烧录

      本文链接:https://www.haomeiwen.com/subject/latpjdtx.html