色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Tina_Linux_系統(tǒng)軟件開(kāi)發(fā)指南

嵌入式Linux那些事 ? 來(lái)源:嵌入式Linux那些事 ? 作者:嵌入式Linux那些事 ? 2023-03-02 15:25 ? 次閱讀


Tina_Linux_系統(tǒng)軟件 開(kāi)發(fā)指南

image-20221123145359081image-20221123145359081image-20221123145359081image-20221123145359081image-20221123145359081

1 概述

編寫目的:本文檔作為Allwinner Tina Linux系統(tǒng)平臺(tái)開(kāi)發(fā)指南,旨在幫助軟件開(kāi)發(fā)工程師、技術(shù)支持工程師快速上手,熟悉Tina Linux系統(tǒng)的開(kāi)發(fā)及調(diào)試流程。

適用范圍:Tina Linux v3.5及以上版本。

2 Tina系統(tǒng)資料

2.1 概述

Tina SDK發(fā)布的文檔旨在幫助開(kāi)發(fā)者快速上手開(kāi)發(fā)及調(diào)試,文檔中涉及的內(nèi)容并不能涵蓋所有的開(kāi)發(fā)知識(shí)和問(wèn)題。文檔列表也正在不斷更新。

Tina SDK提供豐富的文檔資料,包括硬件參考設(shè)計(jì)文檔、Flash等基礎(chǔ)器件支持列表、量產(chǎn)工具使用說(shuō)明、軟件開(kāi)發(fā)與制定介紹文檔、芯片研發(fā)手冊(cè)等資料。

2.2 文檔列表

請(qǐng)以全志科技全志客戶服務(wù)平臺(tái)最新列表為準(zhǔn)。

3 Tina系統(tǒng)概述

3.1 概述

Tina Linux系統(tǒng)是基于openwrt-14.07的版本的軟件開(kāi)發(fā)包,包含了Linux系統(tǒng)開(kāi)發(fā)用到的內(nèi)核源碼、驅(qū)動(dòng)、工具、系統(tǒng)中間件與應(yīng)用程序包。openwrt是一個(gè)開(kāi)源的嵌入式Linux系統(tǒng)自動(dòng)構(gòu)建框架,是由Makefile腳本和Kconfig配置文件構(gòu)成的。使得用戶可以通過(guò)menuconfig配置,編譯出一個(gè)完整的可以直接燒寫到機(jī)器上運(yùn)行的Linux系統(tǒng)軟件。

3.2 系統(tǒng)框圖

圖3-1: Tina Linux系統(tǒng)框圖

Tina系統(tǒng)軟件框圖如圖所示,從下至上分為Kernel && Driver、Libraries、System Ser-vices、Applications四個(gè)層次。各層次內(nèi)容如下:

Kernel&&Driver主要提供Linux Kernel的標(biāo)準(zhǔn)實(shí)現(xiàn)。Tina平臺(tái)的Linux Kernel 采用Linux3.4、linux3.10、linux4.4、linux4.9等內(nèi)核(不同硬件平臺(tái)可能使用不同內(nèi)核版本)。提供安全性,內(nèi)存管理,進(jìn)程管理,網(wǎng)絡(luò)協(xié)議棧等基礎(chǔ)支持;主要是通過(guò)Linux內(nèi)核管理設(shè)備硬件資源,如CPU調(diào)度、緩存、內(nèi)存、I/O等。

Libraries層對(duì)應(yīng)一般嵌入式系統(tǒng),相當(dāng)于中間件層次。包含了各種系統(tǒng)基礎(chǔ)庫(kù),及第三方開(kāi)源程序庫(kù)支持,對(duì)應(yīng)用層提供API接口,系統(tǒng)定制者和應(yīng)用開(kāi)發(fā)者可以基于Libraries層的API開(kāi)發(fā)新的應(yīng)用。

System Services層對(duì)應(yīng)系統(tǒng)服務(wù)層,包含系統(tǒng)啟動(dòng)管理、配置管理、熱插拔管理、存儲(chǔ)管理、多媒體中間件等。

Applications層主要是實(shí)現(xiàn)具體的產(chǎn)品功能及交互邏輯,需要一些系統(tǒng)基礎(chǔ)庫(kù)及第三方程序庫(kù)支持,開(kāi)發(fā)者可以開(kāi)發(fā)實(shí)現(xiàn)自己的應(yīng)用程序,提供系統(tǒng)各種能力給到最終用戶。

3.3 開(kāi)發(fā)流程

Tina Linux 系統(tǒng)是基于 Linux Kernel,針對(duì)多種不同產(chǎn)品形態(tài)開(kāi)發(fā)的 SDK。可以基于本 SDK,有效地實(shí)現(xiàn)系統(tǒng)定制和應(yīng)用移植開(kāi)發(fā)。

圖3-2: Tina Linux系統(tǒng)開(kāi)發(fā)流程

如上圖所示,開(kāi)發(fā)者可以遵循上述開(kāi)發(fā)流程,在本地快速構(gòu)建Tina Linux系統(tǒng)的開(kāi)發(fā)環(huán)境和編譯 代碼。下面將簡(jiǎn)單介紹下該流程:

檢查系統(tǒng)需求:在下載代碼和編譯前,需確保本地的開(kāi)發(fā)設(shè)備能夠滿足需求,包括機(jī)器的硬件能力,軟件系統(tǒng),工具鏈等。目前Tina Linux系統(tǒng)只支持Ubuntu操作系統(tǒng)環(huán)境下編譯,并僅提供Linux環(huán)境下的工具鏈支持,其他如MacOS,Windows等系統(tǒng)暫不支持。

搭建編譯環(huán)境:開(kāi)發(fā)機(jī)器需要安裝的各種軟件包和工具,詳見(jiàn)開(kāi)發(fā)環(huán)境章節(jié),獲知TinaLinux已經(jīng)驗(yàn)證過(guò)的操作系統(tǒng)版本,編譯時(shí)依賴的庫(kù)文件等。

選擇設(shè)備:在編譯源碼前,開(kāi)發(fā)者需要先導(dǎo)出預(yù)定義環(huán)境變量,然后根據(jù)開(kāi)發(fā)者根據(jù)的需求,選擇對(duì)應(yīng)的硬件板型,詳見(jiàn)編譯章節(jié)。

系統(tǒng)定制:開(kāi)發(fā)者可以根據(jù)使用的硬件板子、產(chǎn)品定義,定制U-Boot、Kernel及Open-wrt,請(qǐng)參考后續(xù)章節(jié)中相關(guān)開(kāi)發(fā)指南和配置的描述。

編譯與打包:完成設(shè)備選擇、系統(tǒng)定制之后執(zhí)行編譯命令,包括整體或模塊編譯以及編譯清理等工作,進(jìn)一步的,將生成的boot/內(nèi)核二進(jìn)制文件、根文件系統(tǒng)、按照一定格式打包成固件。詳見(jiàn)編譯打包章節(jié)。

燒錄并運(yùn)行:繼生成鏡像文件后,將介紹如何燒錄鏡像并運(yùn)行在硬件設(shè)備,進(jìn)一步內(nèi)容詳見(jiàn)系統(tǒng)燒寫章節(jié)。

4 Tina開(kāi)發(fā)環(huán)境

4.1 概述

嵌入式產(chǎn)品開(kāi)發(fā)流程中,通常有兩個(gè)關(guān)鍵的步驟,編譯源碼與燒寫固件。源碼編譯需要先準(zhǔn)備好

編譯環(huán)境,而固件燒寫則需要廠家提供專用燒寫工具。本章主要講述這如何搭建環(huán)境來(lái)實(shí)現(xiàn)Tinasdk的編譯、燒寫。

4.2 編譯環(huán)境搭建.

一個(gè)典型的嵌入式開(kāi)發(fā)環(huán)境包括本地開(kāi)發(fā)主機(jī)和目標(biāo)硬件板。

本地開(kāi)發(fā)主機(jī)作為編譯服務(wù)器,需要提供Linux操作環(huán)境,建立交叉編譯環(huán)境,為軟件開(kāi)發(fā)提供代碼更新下載,代碼交叉編譯服務(wù)。

本地開(kāi)發(fā)主機(jī)通過(guò)串口或USB與目標(biāo)硬件板連接,可將編譯后的鏡像文件燒寫到目標(biāo)硬件板,并調(diào)試系統(tǒng)或應(yīng)用程序。

4.2.1 開(kāi)發(fā)主機(jī)配置.

Tina Linux SDK是在ubuntu14.04開(kāi)發(fā)測(cè)試的,因此我們 推薦使用Ubuntu 14.04 主機(jī)環(huán)境進(jìn)行源碼編譯,其他版本沒(méi)有具體測(cè)試,可能需要對(duì)軟件包做相應(yīng)調(diào)整。

4.2.2 軟件包配置.

編譯Tina Linux SDK 之前,需要先確定編譯服務(wù)器安裝了gcc,binutils,bzip2,flex,python,perl,make,ia32-libs,find,grep,diff,unzip,gawk,getopt,subver-sion,libz-dev,libc headers

ubuntu可直接執(zhí)行以下命令安裝:

sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawkflex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip ia32-libslib32z1 lib32z1-dev lib32stdc++6 libstdc++6 -y

ubuntu 16.04及以上版本,執(zhí)行下面命令安裝軟件包:

sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip lib32z1 lib32z1-dev lib32stdc++ libstdc++6 -y libc6:i386 libstdc++6:i386 lib32ncurses5 lib32z

5 Tina系統(tǒng)獲取

5.1 概述

5.2 SDK獲取

Allwinner Tina Linux SDK通過(guò)全志代碼服務(wù)器對(duì)外發(fā)布。客戶需要向業(yè)務(wù)/技術(shù)支持窗口申請(qǐng)SDK下載權(quán)限。申請(qǐng)需同步提供SSH公鑰進(jìn)行服務(wù)器認(rèn)證授權(quán),獲得授權(quán)后即可同步代碼。

5.3 SDK結(jié)構(gòu)

Tina Linux SDK主要由構(gòu)建系統(tǒng)、配置工具、工具鏈、host工具包、目標(biāo)設(shè)備應(yīng)用程序、文檔、腳本、linux內(nèi)核、bootloader部分組成,下文按照目錄順序介紹相關(guān)的組成組件。

Tina-SDK/

├── build

├── config

├── Config.in

├── device

├── dl

├── docs

├── lichee

├── Makefile

├── out

├── package

├── prebuilt

├── rules.mk

├── scripts

├── target

├── tmp

├── toolchain

└── tools

5.3.1 build目錄

build目錄存放Tina Linux的構(gòu)建系統(tǒng)文件,此目錄結(jié)構(gòu)下主要是一系列基于Makefile規(guī)格編 寫的mk文件。主要的功能是:

檢測(cè)當(dāng)前的編譯環(huán)境是否滿足Tina Linux的構(gòu)建需求。

生成host包編譯規(guī)則。

生成工具鏈的編譯規(guī)則。

生成target包的編譯規(guī)則。

生成linux kernel的編譯規(guī)則。

生成系統(tǒng)固件的生成規(guī)則。

build/

├── autotools.mk

├── aw-upgrade.mk

├── board.mk

├── cmake.mk

├── config.mk

├── debug.mk

├── depends.mk

├── device.mk

├── device_table.txt

├── download.mk

├── dumpvar.mk

├── envsetup.sh

5.3.2 config目錄

config目錄主要存放Tina Linux中配置菜單的界面以及一些固定的配置項(xiàng),該配置菜單基于內(nèi) 核的mconf規(guī)格書(shū)寫。

config/

├── Config-build.in

├── Config-devel.in

├── Config-images.in

├── Config-kernel.in

└── top_config.in

5.3.3 devices目錄

devices目錄用于存放方案的配置文件,包括內(nèi)核配置,env配置,分區(qū)表配置,sys_config.fex, board.dts等。

這些配置在舊版本上是保存于target目錄下,新版本挪到device目錄。

注意defconfig仍保存在target目錄。

device/

└── config

├── chips

├── common

└── rootfs_tar

快捷跳轉(zhuǎn)命令:cconfigs

5.3.4 docs目錄

docs目錄主要存放用于開(kāi)發(fā)的文檔,以markdown格式書(shū)寫。

本目錄不再更新,請(qǐng)以全志客戶服務(wù)平臺(tái)系統(tǒng)文檔為準(zhǔn)。

docs/

├── build.md

├── config.md

├── init-scripts.md

├── Makefile

├── network.md

├── tina.md

├── wireless.md

└── working.md

5.3.5 lichee目錄

lichee目錄主要存放bootloader,內(nèi)核,arisc,dsp等代碼。

lichee/

├── bootloader

│ ├── uboot_2011_sunxi_spl

│ └── uboot_2014_sunxi_spl

├── brandy

│ ├── u-boot-2011.09

│ └── u-boot-2014.07

├── brandy-2.0

│ ├── spl

│ ├── tools

│ └── u-boot-2018

├── linux-3.4

├── linux-3.10

├── linux-4.4

├── linux-4.9

├── arisc

快捷跳轉(zhuǎn)命令:ckernel,cboot,cboot0,carisc

5.3.6 package目錄

package目錄存放target機(jī)器上的軟件包源碼和編譯規(guī)則,目錄按照目標(biāo)軟件包的功能進(jìn)行分 類。

package/ ├── allwinner ├── base-files ├── devel ├── dragonst ├── firmware ├── kernel ├── ...... └── utils

5.3.7 prebuilt目錄

prebuild目錄存放預(yù)編譯交叉編譯器,目錄結(jié)構(gòu)如下。

prebuilt/ └── gcc └── linux-x86 ├── aarch64 │ ├── toolchain-sunxi-musl │ └── toolchain-sunxi-glibc ├── arm │ ├── toolchain-sunxi-arm9-glibc │ ├── toolchain-sunxi-arm9-musl │ ├── toolchain-sunxi-glibc │ ├── toolchain-sunxi-musl └── host └── host-toolchain.txt

5.3.8 scripts目錄

scripts目錄用于存放一些構(gòu)建編譯相關(guān)的腳本。

scripts/ ├── arm-magic.sh ├── brcmImage.pl ├── bundle-libraries.sh ├── checkpatch.pl ├── clang-gcc-wrapper ├── cleanfile ├── clean-package.sh ├── cleanpatch ├── ......

5.3.9 target目錄

target目錄用于存放目標(biāo)板相關(guān)的配置以及sdk和toolchain生成的規(guī)格。

target/ ├── allwinner ├── Config.in ├── imagebuilder ├── Makefile ├── sdk └── toolchain

快捷跳轉(zhuǎn)命令:cdevice。

5.3.10 toolchain目錄.

toolchain目錄包含交叉工具鏈構(gòu)建配置、規(guī)則。

toolchain/ ├── binutils ├── Config.in ├── fortify-headers ├── gcc ├── gdb ├── glibc ├── info.mk ├── insight ├── kernel-headers ├── Makefile ├── musl └── wrapper

5.3.11 tools目錄.

tools目錄用于存放host端工具的編譯規(guī)則。

tools/ ├── autoconf ├── automake ├── aw_tools ├── b43-tools ├── ......

5.3.12 out目錄.

out目錄用于保存編譯相關(guān)的臨時(shí)文件和最終鏡像文件,編譯后自動(dòng)生成此目錄,例如編譯方案 r328s2-perf1。

out/ ├── r328s2-perf └── host

其中host目錄用于存放host端的工具以及一些開(kāi)發(fā)相關(guān)的文件。

r328s2-perf1目錄為方案對(duì)應(yīng)的目錄。方案目錄下的結(jié)構(gòu)如下:

out/r328s2-perf ├── boot.img ├── compile_dir ├── image ├── md5sums ├── packages ├── r328s2-perf1-boot.img ├── r328s2-perf1-uImage ├── r328s2-perf1-zImage ├── rootfs.img ├── sha256sums ├── staging_dir └── tina_r328s2-perf1_uart0.img

boot.img為最終燒寫到系統(tǒng)boot分區(qū)的數(shù)據(jù),可能為boot.img格式也可能為uImage格式。

rootfs.img為最終燒寫到系統(tǒng)rootfs分區(qū)的數(shù)據(jù),該分區(qū)默認(rèn)為squashfs格式。

r328s2-perf1-zImage為內(nèi)核的zImage格式鏡像,用于進(jìn)一步生成uImage。

r328s2-perf1-uImage為內(nèi)核的uImage格式鏡像,若配置為uImage格式,則會(huì)拷貝成boot.img。

r328s2-perf1-boot.img為內(nèi)核的boot.img格式鏡像,若配置為boot.img格式,則會(huì)拷貝成boot.img

compile_dir為sdk編譯host,target和toolchain的臨時(shí)文件目錄,存有各個(gè)軟件包的源碼。

staging_dir為sdk編譯過(guò)程中保存各個(gè)目錄結(jié)果的目錄。

packages目錄保存的是最終生成的ipk軟件包。

tina_r328s2-perf1_uart0.img為最終固件包(系統(tǒng)鏡像),串口信息通過(guò)串口輸出

若使用pack -d,則生成的固件包為xxx_card0.img,串口信息轉(zhuǎn)遞到tf卡座輸出。

快捷跳轉(zhuǎn)命令:cout。

5.4 SDK更新

SDK更新分為兩類:一類是以補(bǔ)丁的形式發(fā)布到一號(hào)通,發(fā)布后系統(tǒng)以郵件形式通知開(kāi)發(fā)者;另一類是定期(半年或季度)的小版本迭代升級(jí),將過(guò)往的補(bǔ)丁合入到SDK中,發(fā)布后以系統(tǒng)郵件通知開(kāi)發(fā)者,可基于干凈的SDK包通過(guò)repo sync命令更新。

5.5 問(wèn)題反饋

Allwinner提供全志客戶服務(wù)平臺(tái)(https://open.allwinnertech.com),用來(lái)登記客戶遇到的 問(wèn)題以及解決狀態(tài)。方便雙方追蹤,使問(wèn)題處理更加高效。后續(xù)SDK問(wèn)題、技術(shù)問(wèn)題、技術(shù)咨詢 等都可以提交到此系統(tǒng)上,Allwinner技術(shù)服務(wù)會(huì)及時(shí)將問(wèn)題進(jìn)行分發(fā)、處理和跟蹤。

注:系統(tǒng)登錄帳號(hào)需要與Allwinner開(kāi)通確認(rèn)。

6 Tina編譯打包

6.1 概述

6.2 編譯系統(tǒng)

(1) source build/envsetup.sh (2) lunch (3) make [-jN] (4) pack [-d] 其中, 步驟(1)建立編譯環(huán)境,導(dǎo)出編譯變量。 步驟(2)提示需要選擇你想要編譯的方案。 步驟(3)參數(shù)N為并行編譯進(jìn)程數(shù)量,依賴編譯服務(wù)器CPU核心數(shù),如 4 核PC,可"make -j4" 步驟(4)打包固件,-d參數(shù)使生成固件包串口信息轉(zhuǎn)到tf卡座輸出。 編譯完成后系統(tǒng)鏡像會(huì)打包在out//目錄下

6.3 編譯boot

命令 命令有效目錄 作用
mboot tina下任意目錄 編譯boot0和uboot
mboot0 tina下任意目錄 編譯boot0
muboot tina下任意目錄 編譯uboot

6.4 編譯內(nèi)核

命令 命令有效目錄 作用
mkernel tina下任意目錄 編譯內(nèi)核

6.5 編譯arisc

arisc是AW平臺(tái)對(duì)cpus代碼環(huán)境的代稱,主要功能是負(fù)責(zé)休眠,關(guān)機(jī)等底層操作。它包含 cpus運(yùn)行所需的驅(qū)動(dòng),庫(kù)及工具鏈等,編譯產(chǎn)生scp.bin,然后打包在Tina鏡像中,有boot- loader在啟動(dòng)時(shí)加載到cpus域運(yùn)行。

Tina中提供了如下與arisc相關(guān)的跳轉(zhuǎn)、編譯命令

命令 命令有效目錄 作用
carisc tina下任意目錄 跳轉(zhuǎn)到cpus代碼工程目錄
mkarisc tina下任意目錄 編譯cpus代碼

在Tina中,編譯arisc代碼有兩種方式,如下:

第一種方式,跳轉(zhuǎn)到arisc代碼路徑下,使用make編譯

arisc代碼庫(kù)具有獨(dú)立的工具鏈和構(gòu)建體系,因此對(duì)arisc代碼的編譯,也可以cd到對(duì)應(yīng)的路徑 下,執(zhí)行make命令。但需注意,此時(shí)需要手動(dòng)將生成的scp.bin文件拷貝到SDK的bin文件 路徑下,覆蓋對(duì)應(yīng)的文件(一般路徑是tina/device/config/chips/${平臺(tái)名}/bin)。

操作如下,

step1 使用carisc或cd命令跳轉(zhuǎn)到arisc代碼環(huán)境下,一般為tina/lichee/arisc/ar100s。 step2 生成必要的配置。在arch/configs/下,存在許多defconfig默認(rèn)配置文件,可根據(jù)AXP型號(hào)選擇使用,例如make sun50iw10p1_axp803_defconfig。此操作將會(huì)在arisc根目錄生成.config。 step3 修改默認(rèn)配置,可使用make menuconfig。此操作會(huì)生成配置菜單,按需選擇配置即可,該操作會(huì)修改.config。如需重新使用默認(rèn)配置,重新執(zhí)行step2即可。 step4 使用make命令編譯 step5 將scp.bin拷貝到Tina的bin目錄,即cbin可跳轉(zhuǎn)的目錄即可。如/tina/device/config/chips/r818/binstep6 若需清理工程,可使用make clean step7 如需提交defconfig配置修改,可使用make savedefconfig命令。此命令會(huì)根據(jù).config在arisc根目錄生成 defconfig。將defconfig拷貝到arch/configs/下,覆蓋對(duì)應(yīng)配置文件即可。

注意:

一般來(lái)說(shuō),arisc執(zhí)行的功能較為底層,多與休眠,關(guān)機(jī)等操作相關(guān),對(duì)穩(wěn)定性要求較高。我們不 建議客戶自己修改任何相關(guān)配置和代碼,如必須,請(qǐng)與我司聯(lián)系或執(zhí)行足夠的穩(wěn)定性測(cè)試。

第二種方式,使用mkarisc命令

如上述方法所述,Tina為了解決arisc編譯后還需手動(dòng)拷貝的問(wèn)題,Tina提供了這個(gè)快捷命令 mkarisc。需要指出的是:目前只支持R818、MR813的arisc代碼編譯。

操作如下,較為簡(jiǎn)單

step1 配置tina環(huán)境,如soure build/envsetup.sh, lunch等操作。 step2 使用mkarisc編譯即可或直接編譯Tina,在編譯Tina時(shí),也會(huì)自動(dòng)調(diào)用mkarisc命令。

注意:

使用mkarisc命令編譯時(shí),會(huì)自動(dòng)讀取board.dts獲取AXP型號(hào),然后使用對(duì)應(yīng)的默認(rèn)配置文 件編譯。如board.dts中指定使用“x-powers,axp803”時(shí),mkarsic命令會(huì)使用arisc工程環(huán) 境下的sun50iw10p1_axp803_defconfig配置文件編譯。此時(shí),若您需要修改該arisc配置, 只能先修改該配置文件后編譯,除此外不接受其他配置修改的方式。

6.6 編譯E907固件(V85x平臺(tái)異構(gòu)AMP核)

E907是V85x平臺(tái)AMP CPU的代稱,其主要功能是提供通用算力補(bǔ)充、輔助Linux實(shí)現(xiàn)快起 等。它包含E907運(yùn)行所需的驅(qū)動(dòng)、庫(kù)及工具鏈等,編譯產(chǎn)生riscv.fex,打包到Tina鏡像中, 由bootloader在啟動(dòng)時(shí)加載到RISC-V核上運(yùn)行。

在Tina SDK中,編譯E907 RISCV代碼如下:

E907 RISCV 代碼庫(kù)具有獨(dú)立的工具鏈和構(gòu)建體系,因此對(duì) E907 固件的編譯,也可以跳 轉(zhuǎn)到對(duì)應(yīng)的路徑下,執(zhí)行命令。但需注意,此時(shí)需要手動(dòng)將生成的 melis30.elf 文件拷貝 到 SDK 的 bin 文件路徑下,覆蓋對(duì)應(yīng)的文件(一般路徑是 device/config/chips/${平臺(tái) 名}/configs/default/riscv.fex)。

操作如下,

step1 使用cd命令跳轉(zhuǎn)到e907代碼環(huán)境下,一般為rtos-dev/lichee/melis-v3.0/source step2 source melis-env.sh step3 lunch v853-e907-ver1-board step4 make menuconfig step5 make -j step6 如需減少存儲(chǔ)空間,可裁剪調(diào)試信息,在melis source目錄執(zhí)行:riscv64-unknown-elf-strip ekernel/melis30.elf step7 拷貝并重命名成riscv.fex替換掉tina/device/config/chips/v853/configs/default目錄下的riscv.fex cp ekernel/melis30.elf /home/xxx/tina/device/config/chips/v853/configs/default/riscv.fex step8 Tina系統(tǒng)目錄執(zhí)行打包命令pack

6.7 重編應(yīng)用

請(qǐng)確保進(jìn)行過(guò)一次固件的編譯,確保SDK基礎(chǔ)已經(jīng)編譯,才能單獨(dú)重編應(yīng)用包。重編應(yīng)用包應(yīng)用場(chǎng)景一般為: 只修改了應(yīng)用,不想重新燒寫固件,只需要安裝應(yīng)用安裝包即可 。請(qǐng)確保在編譯前已加載tina環(huán)境:

$ source build/envsetup.sh $ lunch

6.7.1 方法一

當(dāng)在應(yīng)用包的目錄(包括其子目錄)中,可執(zhí)行

$ mm [-B] => B參數(shù)則先clean此應(yīng)用臨時(shí)文件再編譯

示例:假設(shè)軟件包路徑為:tina/package/utils/rwcheck,則:

$ cd tina/package/utils/rwcheck $ mm -B

編譯出應(yīng)用安裝包保存路徑為:

tina/out/<方案>/packages/base

6.7.2 方法二

當(dāng)在tina的根目錄,可執(zhí)行:

$ make <應(yīng)用包的路徑>/clean,==>清空應(yīng)用包臨時(shí)文件 $ make <應(yīng)用包的路徑>/install,==>編譯軟件包 或者 $ make <應(yīng)用包的路徑>/{clean,install},==>先清空臨時(shí)文件再編譯

示例:假設(shè)軟件包的路徑為:tina/package/utils/rwcheck,則:

$ cd tina $ make package/utils/rwcheck/{clean,install}

6.8 其他命令

命令 命令有效目錄 作用
make tina根目錄 編譯整個(gè)sdk
make menuconfig tina根目錄 啟動(dòng)軟件包配置界面
make kernel_menuconfig tina根目錄 啟動(dòng)內(nèi)核配置界面
mkarisc tina下任意目錄 編譯cpus源碼,根據(jù)AXP型號(hào)選擇對(duì)應(yīng)的默認(rèn)配置
printfconfig tina下任意目錄 打印當(dāng)前SDK的配置
croot tina下任意目錄 快速切換到tina根目錄
cconfigs tina下任意目錄 快速切換到方案的bsp配置目錄
cdevice tina下任意目錄 快速切換到方案配置目錄
carisc tina下任意目錄 快速切換到cpus代碼目錄
cgeneric tina下任意目錄 快速切換到方案generic目錄
cout tina下任意目錄 快速切換到方案的輸出目錄
cboot tina下任意目錄 快速切換到bootloader目錄
cgrep tina下任意目錄 在c/c++/h文件中查找字符串
minstall path/to/package/ tina根目錄 編譯并安裝軟件包
mclean path/to/package/ tina根目錄 clean軟件包
mm [-B] 軟件包目錄 編譯軟件包,-B指編譯前先clean
pack tina根目錄 打包固件
m tina下任意目錄 make的快捷命令,編譯整個(gè)sdk
p tina下任意目錄 pack的快捷命令,打包固件

7 Tina系統(tǒng)燒寫

7.1 概述

本章節(jié)主要介紹如何將構(gòu)建完成的鏡像文件(image)燒寫并運(yùn)行在硬件設(shè)備上的流程。

SDK中的燒錄工具不再更新,后續(xù)會(huì)刪除,請(qǐng)優(yōu)先選擇從全志客戶服務(wù)平臺(tái)下載最新燒錄工具。

windows工具均集成在APST中,下載安裝APST即可,APST的工具均自帶文檔。

7.2 燒錄工具

Tina提供的幾種鏡像燒寫工具介紹如表所示,用戶可以選擇合適的燒寫方式進(jìn)行燒寫。

工具 運(yùn)行系統(tǒng) 描述
PhoenixSuit windows 分分區(qū)升級(jí)及整個(gè)固件升級(jí)工具
PhoenixCard windows 卡固件制作工具
PhoenixUSBpro windows 量產(chǎn)升級(jí)工具,支持USB一拖 8 燒錄
LiveSuit ubuntu 固件升級(jí)工具

對(duì)于ubuntu:

64bit主機(jī)使用LiveSuitV306_For_Linux64.zip。

32bit主機(jī)使用LiveSuitV306_For_Linux32.zip。

具體燒錄工具和使用說(shuō)明,請(qǐng)到全志客戶服務(wù)平臺(tái)下載。

7.3 進(jìn)入燒錄模式.

設(shè)備需進(jìn)入燒錄模式,以下幾種情況會(huì)進(jìn)入燒錄模式:

BROM無(wú)法讀取到boot0,例如新?lián)Q的flash不包含數(shù)據(jù),或者上電時(shí)短路flash阻斷通信

在串口中按 2 進(jìn)入燒錄。即,在串口工具輸出框中,按住鍵盤的’2’,不停輸出字符’2’,上電啟動(dòng)。boot0檢測(cè)到此字符,會(huì)跳到燒錄模式。

在uboot控制臺(tái),執(zhí)行efex。

在linux控制臺(tái),執(zhí)行reboot efex。

adb可用的情況下,可使用adb shell reboot efex,或點(diǎn)擊燒錄工具上的“立即燒錄”按鈕。

當(dāng)完整配置[fel_key]下fel_key_max和fel_key_min時(shí),按下鍵值在范圍內(nèi)按鍵,之后上電。

當(dāng)板子有FEL按鍵時(shí),按住FEL按鍵上電。

制作特殊的啟動(dòng)卡,從卡啟動(dòng)再進(jìn)入燒錄模式。

8 Tina uboot定制開(kāi)發(fā)

8.1 概述

本章節(jié)簡(jiǎn)單介紹uboot基本配置、功能裁剪、編譯打包、常用命令的使用,幫助客戶了解Tina 平臺(tái)uboot框架,為boot定制開(kāi)發(fā)提供基礎(chǔ)。

目前Tina SDK共有三版uboot,分別是uboot-2011、uboot-2014、uboot-2018,分別在不 同硬件平臺(tái)上使用,客戶拿到SDK需要根據(jù)開(kāi)發(fā)的硬件平臺(tái)核對(duì)版本信息。

8.2 代碼路徑

TinaSDK/ ├── brandy │ ├── ... │ ├── u-boot-2011 │ └── u-boot-2014 ├── brandy-2.0 │ ├── ... │ └── u-boot-2018

8.3 uboot功能

TinaSDK中,bootloader/uboot在內(nèi)核運(yùn)行之前運(yùn)行,可以初始化硬件設(shè)備、建立內(nèi)存空間映 射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適狀態(tài),為最終調(diào)用linux內(nèi)核準(zhǔn)備好正確的環(huán)境。 在Tina系統(tǒng)平臺(tái)中,除了必須的引導(dǎo)系統(tǒng)啟動(dòng)功能外,uboot還提供燒寫、升級(jí)等其它功能。

引導(dǎo)內(nèi)核能從存儲(chǔ)介質(zhì)(nand/mmc/spinor)上加載內(nèi)核鏡像到DRAM指定位置并運(yùn)行。

量產(chǎn)&升級(jí)包括卡量產(chǎn),USB量產(chǎn),私有數(shù)據(jù)燒錄,固件升級(jí)。

電源管理包括進(jìn)入充電模式時(shí)的控制邏輯和充電時(shí)的顯示畫(huà)面。

開(kāi)機(jī)提示信息開(kāi)機(jī)能顯示啟動(dòng)logo圖片(BMP格式)。

Fastboot功能實(shí)現(xiàn)fastboot的標(biāo)準(zhǔn)命令,能使用fastboot刷機(jī)。

8.4 uboot配置

以u(píng)boot-2018為例,各項(xiàng)功能可以通過(guò)defconfig或配置菜單menuconfig進(jìn)行開(kāi)啟或關(guān)閉, 具體配置方法如下:

8.4.1 defconfig方式

8.4.1.1 defconfig配置步驟

vim /TinaSDK/lichee/brandy2.0/u-boot-2018/configs/sun8iw18p1_defconfig (若是spinor方案則打開(kāi)sun8iw18p1_nor_defconfig)

打開(kāi)sun8iw18p1_defconfig或sun8iw18p1_nor_defconfig后,在相應(yīng)的宏定義前去掉或添加"#"即可將相應(yīng)功能開(kāi)啟或關(guān)閉。

圖8-1: defconfig配置圖

如上圖,只要將CONFIG_SUNXI_NAND前的#去掉即可支持NAND相關(guān)功能,其他宏定義的開(kāi)啟關(guān)閉也類似。

8.4.1.2 defconfig配置宏介紹.

如下圖是sun8iw18p1_defconfig/sun8iw18p1_nor_defconfig中的基本宏定義的介紹:

圖8-2: defconfig基本宏定義介紹圖

8.4.2 menuconfig方式

通過(guò)menuconfig方式配置的方法步驟如下:

cd /TinaSDK/lichee/brandy2.0/u-boot-2018/ make ARCH=arm menuconfig或make ARCH=arm64 menuconfig 注意:arm針對(duì) 32 位平臺(tái),arm64針對(duì) 64 位平臺(tái)。

執(zhí)行上述命令會(huì)彈出menuconfig配置菜單,如下圖所示,此時(shí)即可對(duì)各模塊功能進(jìn)行配置,配 置方法menuconfig配置菜單窗口中有說(shuō)明。

圖8-3: menuconfig配置菜單圖

8.5 uboot編譯

8.5.1 方法一

在tina目錄下即可編譯uboot。

source build/envsetup.sh(見(jiàn)詳注1) lunch (見(jiàn)詳注2) muboot(見(jiàn)詳注3) 詳注: 1 加載環(huán)境變量及tina提供的命令。 2 輸入編號(hào),選擇方案。 3 編譯uboot,編譯完成后自動(dòng)更新uboot binary到TinaSDK/target/allwinner/$(BOARD)-common/bin/。

8.5.2 方法二

source build/envsetup.sh(見(jiàn)詳注1) lunch (見(jiàn)詳注2) cboot(見(jiàn)詳注3) make XXX_config(見(jiàn)詳注4) make -j 詳注: 3 跳轉(zhuǎn)到Uboot源碼目錄。 4 選擇方案配置,如果是使用norflash,運(yùn)行make XXX_nor_config。 5 執(zhí)行編譯uboot的動(dòng)作。

8.6 uboot的配置

8.6.1 sys_config配置.

sys_config.fex是對(duì)不同模塊參數(shù)進(jìn)行配置的重要文件,對(duì)各模塊重要參數(shù)的更改及更新提供了 極大的方便。其文檔存放路徑:

TinaSDK/target/allwinner/$(BOARD)/configs/sys_config.fex TinaSDK/device/config/chips/$(CHIP)/configs/$(BOARD)/sys_config.fex

8.6.1.1 sys_config.fex結(jié)構(gòu)介紹

sys_config.fes主要由主鍵和子鍵構(gòu)成,主鍵是某項(xiàng)功能或模塊的主標(biāo)識(shí),由[]括起,子鍵是對(duì) 該功能或模塊中各個(gè)參數(shù)的配置項(xiàng),如下圖所示,dram_para是主鍵,dram_clk、dram_type 和dram_zp是子鍵。

圖8-4: sysconfig.fex基本結(jié)構(gòu)圖

8.6.1.2 sys_config.fex配置實(shí)例

[platform]:平臺(tái)相關(guān)配置項(xiàng)。

圖8-5: platform配置圖

例如,debug_mode =1表示開(kāi)啟uboot的調(diào)試模式,開(kāi)啟后會(huì)在log中打印出對(duì)應(yīng)的調(diào)試信 息。next_work=2表示燒錄完成后系統(tǒng)的下一步執(zhí)行動(dòng)作(0x1表示正常啟動(dòng)、0x2表示重啟、 0x3表示關(guān)),其他配置可以查看[platform]前的提示說(shuō)明。

[target]:目標(biāo)平臺(tái)相關(guān)功能配置項(xiàng)

圖8-6: target配置圖

上圖中的可以通過(guò)配置boot_clock配置cpu的頻率大小。

[uart_para]:串口配置項(xiàng),uart_para配置項(xiàng)是uboot串口打印調(diào)試時(shí)用到的重要配置

圖8-7: uart_para配置圖

上圖中的uart_debug_port=0表示使用的是uart0,uart_debug_tx/uart_debug_rx配置的gpio口(PA04/PA05)需要根據(jù)對(duì)應(yīng)的GPIO DATASHEET進(jìn)行配置。

8.6.1.3 sys_config.fex解析流程

在uboot2014/2018中sys_config.fex最終會(huì)被轉(zhuǎn)化為dtb(device tree binary,linux內(nèi)核配置方式),dtb最終會(huì)被打包燒錄至flash中,啟動(dòng)過(guò)程中會(huì)將該文件加載至內(nèi)存,之前在sys_config.fex中配置的參數(shù)已轉(zhuǎn)化為dtb節(jié)點(diǎn),最終會(huì)調(diào)用fdt_getprop_32()函數(shù)對(duì)dtb中的節(jié)點(diǎn)進(jìn)行解析。

8.6.2 環(huán)境變量配置.

uboot的環(huán)境變量就是一個(gè)個(gè)的鍵值對(duì),操作接口為:getenv(),setenv(),saveenv()。環(huán)境變量的形式:

boot_normal=sunxi_flash read 40007800 boot;boota 4000780 boot_recovery=sunxi_flash read 40007800 recovery;boota 40007800 boot_fastboot= fastboot

8.6.2.1 環(huán)境變量作用.

可以把一些參數(shù)信息或者命令序列定義在該環(huán)境變量中。在環(huán)境變量中定義UBOOT命令序列,

可以把UBOOT各個(gè)功能模塊按順序組合在一起執(zhí)行,從而完成某個(gè)重要功能。

例如,如果執(zhí)行了上述提到的 boot_normal 環(huán)境變量對(duì)應(yīng)的命令,Uboot 則會(huì)先調(diào)用 sunxi_flash命令從存儲(chǔ)介質(zhì)的boot分區(qū)上加載內(nèi)核到DRAM的0x40007800位置;然后調(diào) 用boota命令完成內(nèi)核的引導(dǎo)。

uboot啟動(dòng)時(shí)調(diào)用環(huán)境變量方式下如圖所示:

圖8-8: uboot啟動(dòng)調(diào)用環(huán)境變量方式圖

8.6.2.2 環(huán)境變量配置示例介紹.

TinaSDK中,環(huán)境變量配置文件保存在TinaSDK/target/allwinner/$(BOARD)/configs/env.cfg 文件,用戶使用的時(shí)候,可能會(huì)看到env-4.4.cfg、env-4.9.cfg等文件,env-xxx后綴數(shù)字表示在不同內(nèi)核版本上的配置。打開(kāi)后其內(nèi)容示例如下,

bootdelay=0,改環(huán)境變量bootdelay(即boot啟動(dòng)時(shí)log中的倒計(jì)時(shí)延遲時(shí)間)值的大小,為便于調(diào)試,bootdelay的值一般不要等于 0 ,這樣在小機(jī)上電后按下任意鍵才能進(jìn)入uboot shell命令狀態(tài)。

boot_normal=sunxi_flash read 40007800 boot;boota 4000780,設(shè)置啟動(dòng)內(nèi)核命令,即將boot分區(qū)讀到內(nèi)存0x40007800地址處,然后從內(nèi)存0x40007800地址處啟動(dòng)內(nèi)核。

Setargs_nand=setenv bootargs earlyprintk=${earlyprink}....... ,設(shè)置內(nèi)核相關(guān)環(huán)境變量,該變量在啟動(dòng)至內(nèi)核的log中會(huì)打印處理,即cmdline如下圖:

圖8-9: kernel cmdline圖

loglevel=8,設(shè)置內(nèi)核log打印等級(jí)。

8.6.3 sys_partition.fex分區(qū)配置

分區(qū)配置文件是一個(gè)規(guī)劃磁盤分區(qū)的文件,燒錄過(guò)程會(huì)按照該分區(qū)配置文件將各分區(qū)數(shù)據(jù)燒錄至flash中。

TinaSDK中,分區(qū)配置文件路徑TinaSDK/target/allwinner/$(BOARD)/configs/sys_partition.fex。有些方案可以看到sys_partition.fex、sys_partition_nor.fex兩個(gè)分區(qū)配置文件,若是打包Tina非nor固件,則使用的是sys_partition_linux.fex配置文件,若是打包nor固件,則使用的是sys_partition_nor.fex。

8.6.3.1 sys_partition.fex分區(qū)配置介紹

一個(gè)分區(qū)的屬性,包含名稱、分區(qū)大小、下載文件與用戶屬性。以下是文件中所描述的一個(gè)分區(qū)的屬性:

name,分區(qū)名稱由用戶自定義。當(dāng)用戶在定義一個(gè)分區(qū)的時(shí)候,可以把這里改成自己希望的字符串,但是長(zhǎng)度不能超過(guò) 16 個(gè)字節(jié)。

size,定義該分區(qū)的大小,以扇區(qū)的單位(1扇區(qū)=512bytes,如上圖給env 分區(qū)分配了32768 個(gè)扇區(qū),即32768*512/1024/1024 = 16M),注意,為了字節(jié)對(duì)齊,這里分配的扇區(qū)大小應(yīng)當(dāng)能整除 128 。

downloadfile,下載文件的路徑和名稱。可以使用相對(duì)路徑,相對(duì)是指相對(duì)于image.cfg文件所在分區(qū)。也可以使用絕對(duì)路徑。

user_type,提供給操作系統(tǒng)使用的屬性。目前,每個(gè)操作系統(tǒng)在讀取分區(qū)的時(shí)候,會(huì)根據(jù)用戶屬性來(lái)判斷當(dāng)前分區(qū)是不是屬于自己的然后才進(jìn)行操作。這樣設(shè)計(jì)的目的是為了避免在多系統(tǒng)同時(shí)存在的時(shí)候,A操作系統(tǒng)把B操作系統(tǒng)的系統(tǒng)分區(qū)進(jìn)行了不應(yīng)該的讀寫操作,導(dǎo)致B操作系統(tǒng)無(wú)法正常工作。

更具體的說(shuō)明,可參考《TinaLinux存儲(chǔ)管理開(kāi)發(fā)指南》。

9 Tina kernel定制開(kāi)發(fā)

9.1 概述

本章節(jié)簡(jiǎn)單介紹kernel基本配置、功能裁剪、常用命令的使用,幫助客戶了解Tina平臺(tái)linux 內(nèi)核,為內(nèi)核定制開(kāi)發(fā)提供基礎(chǔ)。

目前Tina SDK共有 4 版linux kernel,分別是linux-3.4、linux-3.10、linux-4.4、linux- 4.9,分別在不同硬件平臺(tái)上使用,客戶拿到SDK需要根據(jù)開(kāi)發(fā)的硬件平臺(tái)核對(duì)內(nèi)核信息。

9.2 代碼路徑

TinaSDK/ ├── ... ├── linux-3.10 ├── linux-3.4 ├── linux-4.4 └── linux-4.9

9.3 模塊開(kāi)發(fā)文檔.

詳閱BSP開(kāi)發(fā)文檔,文檔目錄包括常用內(nèi)核模塊使用與開(kāi)發(fā)說(shuō)明。

9.4 內(nèi)核配置

客戶在定制化產(chǎn)品時(shí),通常需要更改linux內(nèi)核配置,在TinaSDK中,打開(kāi)內(nèi)核配置的方式如 下,

croot make kernel_menuconfig

執(zhí)行完后,shell控制臺(tái)會(huì)跳出配置菜單。如下圖所示,

圖9-1: TinaLinux內(nèi)核配置菜單

10 Tina系統(tǒng)定制開(kāi)發(fā)

10.1 Tina procd-init與busybox-init切換.

tina默認(rèn)為procd-init:

make menuconfig進(jìn)行配置: 1.System init 選擇procd-init 2.以下一步步選中 Base system ---> <*>block-mount <*>busybox................................ Core utilities for embedded Linux ---> Init Utilities ---> [ ] init 此處不選 Coreutils ---> [*] head Miscellaneous Utilities ---> [*] strings <*> uci <*> logd 3.env.cfg修改 init=/sbin/init

busybox-init自啟動(dòng)方式配置如下:

make menuconfig進(jìn)行配置: 1.System init 選擇busy-init 2.以下一步步選中 Base system ---> <*>busybox................................ Core utilities for embedded Linux ---> Init Utilities ---> [* ] init 此處選上 3.env.cfg修改 init=/init rdinit=/rdinit

10.2應(yīng)用移植

在Tina Linux SDK中一個(gè)軟件包目錄下通常包含如下兩個(gè)目錄和一個(gè)文件:

package/<分類>/<軟件包名>/Makefile package/<分類>/<軟件包名>/patches/ [可選] package/<分類>/<軟件包名>/files/ [可選] 其中, patches 保存補(bǔ)丁文件,在編譯前會(huì)自動(dòng)給源碼打上所有補(bǔ)丁 files 保存軟件包的源碼,在編譯時(shí)會(huì)對(duì)應(yīng)源碼覆蓋源碼中的源文件 Makefile 編譯規(guī)則文件,

10.2.1 Makefile范例

該Makefile的功能是軟件源碼的準(zhǔn)備,編譯和安裝的過(guò)程,提供給Tina Linux識(shí)別和管理軟件包的接口,軟件的編譯邏輯是由軟件自身的Makefile決定,理論上和該Makefile(該Makefile只執(zhí)行make命令和相關(guān)參數(shù))無(wú)實(shí)質(zhì)關(guān)系。

圖10-2-1

詳注:

1.如果是開(kāi)源軟件,軟件包版本建議與下載軟件包的版本一致。 2.以PKG開(kāi)頭的變量主要告訴編譯系統(tǒng)去哪里下載軟件包。 3.md5sum用于校驗(yàn)下載下來(lái)的軟件包是否正確,如果正確,在編譯該軟件的時(shí)候,就會(huì)在PKG_BUILD_DIR下找到該軟件包的源碼。 4.Package/: 用來(lái)指定該P(yáng)ackage的名字,該名字會(huì)在配置系統(tǒng)中顯示。 5.使用依賴包的名字來(lái)指定依賴關(guān)系,如果是擴(kuò)展包,前面添加一個(gè)”+”號(hào),如果是內(nèi)核版本依賴使用@LINUX_2_。 6.如果該值為 1 ,該包將不會(huì)出現(xiàn)在配置菜單中,但會(huì)作為固定編譯,可選。 7.在開(kāi)源軟件中一般用來(lái)生成Makefile,其中參數(shù)可以通過(guò)CONFIGURE_VARS來(lái)傳遞。 8.在開(kāi)源軟件中一般相當(dāng)于執(zhí)行make,其中有兩個(gè)參數(shù)可以使用:MAKE_FLAGS和MAKE_VARS。 9.內(nèi)置的幾個(gè)關(guān)鍵字如下: INSTALL_DIR相當(dāng)于install -d m0755 INSTALL_BIN相當(dāng)于install -m0755 INSTALL_DATA相當(dāng)于install -m0644 INSTALL_CONF相當(dāng)于install -m0600 10.該Makefile的所有define部分都是為該宏的參數(shù)做的定義.上層Makefile通過(guò)調(diào)用此宏進(jìn)行編譯。

10.2.2 自啟動(dòng)設(shè)置

在Tina Linux中支持兩種格式的初始化腳本,一種是busybox式或者sysV式的初始化腳本, 一種是procd式的初始化腳本。一般我們把由初始化腳本啟動(dòng)的應(yīng)用叫做服務(wù)

初始化腳本以shell腳本的編程語(yǔ)言組織,shell腳本作為基礎(chǔ)知識(shí)在此不展開(kāi)說(shuō)明。一般情況 下,初始化腳本源碼保存在軟件的files目錄,且后綴為“.init”,例如:

tina/package/system/fstools/files/fstab.init

在Makefile的install中把初始化腳本安裝到小機(jī)端的/etc/init.d中,例如:

define Package/block-mount/install $(INSTALL_DIR) $(1)/etc/init.d/ $(INSTALL_BIN) ./files/fstab.init $(1)/etc/init.d/fstab endef

10.2.2.1調(diào)用自啟動(dòng)腳本.

手動(dòng)調(diào)用方式在啟動(dòng)的時(shí)候會(huì)有太多的log,且log信息已被logd守護(hù)進(jìn)程收集,不利于我們 調(diào)試初始化腳本,此時(shí)可通過(guò)小機(jī)端的命令行手動(dòng)調(diào)用的形式來(lái)調(diào)試,例如:

root@TinaLinux: /# /etc/init.d/fstab start

10.2.2.2 sysV格式腳本

sysV式的初始化腳本保存在小機(jī)端的/etc/init.d/目錄下,實(shí)現(xiàn)開(kāi)機(jī)自啟動(dòng)。下例以最小內(nèi)容的初 始化腳本作示例講解,核心是實(shí)現(xiàn)start/stop函數(shù):

#!/bin/sh /etc/rc.common # Example script # Copyright (C) 2007 OpenWrt.org START=10 STOP=15 DEPEND=xxxx start() { #commands to launch application } stop() { #commands to kill application } 注意: START=10, 指明開(kāi)機(jī)啟動(dòng)優(yōu)先級(jí)(序列) [數(shù)值越小, 越先啟動(dòng)],取值范圍0-99。 STOP=15, 指明關(guān)機(jī)停止優(yōu)先級(jí)(序列) [數(shù)值越小, 越先關(guān)閉],取值范圍0-99。 DEPEND=xxxx, 指明初始化腳本會(huì)并行執(zhí)行,通過(guò)此項(xiàng)配置確保執(zhí)行的依賴。

名稱 屬性 功能
start 必須實(shí)現(xiàn) 啟動(dòng)一個(gè)服務(wù)
stop 必須實(shí)現(xiàn) 停止一個(gè)服務(wù)
reload 可選實(shí)現(xiàn) 重啟一個(gè)服務(wù)
enable 可選實(shí)現(xiàn) 重新加載服務(wù)
disable 可選實(shí)現(xiàn) 禁用服務(wù)

在shell里面可以使用如下的命令來(lái)操作相關(guān)的服務(wù)。

$ root@TinaLinux:/# /etc/init.d/exmple restart|start|stop|reload|enable|disable

10.2.2.3 procd格式腳本

以下例的初始化腳本作示例講解,主要是實(shí)現(xiàn)函數(shù)start_service:

#!/bin/sh /etc/rc.common USE_PROCD=1 PROG=xxxx START=10 STOP=15 DEPEND=xxxx start_service() { procd_open_instance procd_set_param command $PROG -f ...... procd_close_instance }

詳細(xì)的介紹可以參考:https://wiki.openwrt.org/inbox/procd-init-scripts

10.3應(yīng)用調(diào)試

新添加的軟件默認(rèn)配置為不使能,此時(shí)需要手動(dòng)配置使能軟件包。通過(guò)在tina的根目錄執(zhí)行 make menuconfig進(jìn)入軟件包的配置界面:

圖10-1:應(yīng)用配置主界面

軟件包的所在路徑與軟件包的Makefile中的定義有關(guān),以fstools為例,在Makefile中定義 為:

define Package/fstools SECTION:=base CATEGORY:=Base system DEPENDS:=+ubox +USE_GLIBC:librt +NAND_SUPPORT:ubi-utils TITLE:=OpenWrt filesystem tools MENU:=1 endef

此時(shí),只需要在menuconfig界面中進(jìn)入Basy system即可找到fstools的軟件包。

圖10-2:軟件包所在界面

前綴符號(hào)含義:

[*] 或<*> : 編譯進(jìn)入SDK [ ] 或< > : 不包含

支持操作:

Y或y:選擇包含 N或n:取消選擇

10.4應(yīng)用編譯

詳見(jiàn)重編應(yīng)用章節(jié)。

10.5應(yīng)用安裝

獲取安裝包

安裝包一般位于目錄:

tina/out/<方案>/packages/base

安裝包命名格式為:

<應(yīng)用名>_<應(yīng)用版本>-<應(yīng)用釋放版本>_sunxi.ipk

安裝應(yīng)用包

通過(guò)adb推送安裝包到小機(jī):

$ adb push <安裝包路徑> <推送到小機(jī)路徑>

安裝應(yīng)用包:

$ opkg install <安裝包路徑>

10.6分區(qū)與掛載

升級(jí)分區(qū)

分區(qū) 功能
boot分區(qū) 存內(nèi)核鏡像
rootfs分區(qū) 基礎(chǔ)系統(tǒng)鏡像分區(qū),包含/lib,/bin,/etc等
recovery分區(qū) 存放恢復(fù)系統(tǒng)鏡像,僅大容量方案有,詳見(jiàn)OTA文檔
extend分區(qū) 存放恢復(fù)系統(tǒng)鏡像及rootfs的usr部分,僅小容量方案有,詳見(jiàn)OTA文檔

不升級(jí)分區(qū)

分區(qū) 功能
private分區(qū) 存儲(chǔ)SN號(hào)分區(qū)
misc分區(qū) 系統(tǒng)狀態(tài)、刷機(jī)狀態(tài)分區(qū)
UDISK分區(qū) 用戶數(shù)據(jù)分區(qū),一般掛載在/mnt/UDISK
overlayfs分區(qū) 存儲(chǔ)overlayfs覆蓋數(shù)據(jù)

默認(rèn)掛載點(diǎn)

分區(qū) 掛載點(diǎn) 備注
/dev/by-name/boot /boot
/dev/by-name/boot-res /boot-res
/dev/by-name/UDISK /mnt/UDISK 用戶數(shù)據(jù)分區(qū)
/dev/mmcblk0或/dev/mmcblk0p1 /mnt/SDCARD Tf卡掛載點(diǎn)
/dev/by-name/rootfs_data /overlay 存儲(chǔ)overlayfs覆蓋數(shù)據(jù)

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11292

    瀏覽量

    209328
  • 系統(tǒng)軟件
    +關(guān)注

    關(guān)注

    0

    文章

    39

    瀏覽量

    10949
  • Tina
    +關(guān)注

    關(guān)注

    2

    文章

    45

    瀏覽量

    16976
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Tina_Linux系統(tǒng)裁剪開(kāi)發(fā)指南

    Tina_Linux系統(tǒng)裁剪開(kāi)發(fā)指南1 概述2 Tina系統(tǒng)裁剪簡(jiǎn)介2.1 boot0裁剪2.2 uboot裁剪2.3 內(nèi)核裁剪2.3.1
    的頭像 發(fā)表于 03-06 09:52 ?1552次閱讀

    MSP430 軟件開(kāi)發(fā)指南

    MSP430 軟件開(kāi)發(fā)指南
    發(fā)表于 08-01 09:47

    Rockchip RK3399軟件開(kāi)發(fā)指南

    本文檔主要介紹 Rockchip RK3399 軟件開(kāi)發(fā)指南,旨在幫助軟件開(kāi)發(fā)工程師更快上手 RK3399 的開(kāi)發(fā)及調(diào)試。
    發(fā)表于 10-10 07:15

    基于MSP430軟件開(kāi)發(fā)指南

    基于MSP430軟件開(kāi)發(fā)指南
    發(fā)表于 10-13 15:49 ?23次下載
    基于MSP430<b class='flag-5'>軟件開(kāi)發(fā)指南</b>

    Tina Linux配置開(kāi)發(fā)指南

    Tina Linux配置開(kāi)發(fā)指南
    的頭像 發(fā)表于 03-02 15:28 ?1.6w次閱讀
    <b class='flag-5'>Tina</b> <b class='flag-5'>Linux</b>配置<b class='flag-5'>開(kāi)發(fā)指南</b>

    Linux NOR開(kāi)發(fā)指南

    Linux NOR開(kāi)發(fā)指南
    的頭像 發(fā)表于 03-06 09:55 ?958次閱讀
    <b class='flag-5'>Linux</b> NOR<b class='flag-5'>開(kāi)發(fā)指南</b>

    Versal ACAP系統(tǒng)軟件開(kāi)發(fā)人員指南

    電子發(fā)燒友網(wǎng)站提供《Versal ACAP系統(tǒng)軟件開(kāi)發(fā)人員指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 15:20 ?0次下載
    Versal ACAP<b class='flag-5'>系統(tǒng)軟件開(kāi)發(fā)</b>人員<b class='flag-5'>指南</b>

    Rockchip RK3399軟件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《Rockchip RK3399軟件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 10-09 14:30 ?14次下載
    Rockchip RK3399<b class='flag-5'>軟件開(kāi)發(fā)指南</b>

    keil arm軟件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《keil arm軟件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 01-26 15:51 ?7次下載

    BQ769x2 軟件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《BQ769x2 軟件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 08-12 14:41 ?0次下載

    BQ769x2軟件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《BQ769x2軟件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 08-26 09:12 ?0次下載
    BQ769x2<b class='flag-5'>軟件開(kāi)發(fā)指南</b>

    TUSS44x0軟件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《TUSS44x0軟件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-14 10:59 ?0次下載
    TUSS44x0<b class='flag-5'>軟件開(kāi)發(fā)指南</b>

    PGA450-Q1軟件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《PGA450-Q1軟件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-30 14:25 ?0次下載
    PGA450-Q1<b class='flag-5'>軟件開(kāi)發(fā)指南</b>

    PGA460軟件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《PGA460軟件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 10-09 10:30 ?0次下載
    PGA460<b class='flag-5'>軟件開(kāi)發(fā)指南</b>

    BQ7690x軟件開(kāi)發(fā)指南

    電子發(fā)燒友網(wǎng)站提供《BQ7690x軟件開(kāi)發(fā)指南.pdf》資料免費(fèi)下載
    發(fā)表于 11-07 10:19 ?0次下載
    BQ7690x<b class='flag-5'>軟件開(kāi)發(fā)指南</b>
    主站蜘蛛池模板: 深夜释放自己污在线看| 久久精品国产亚洲AV蜜臀| 亚洲免费视频日本一区二区| 花蝴蝶在线直播观看| 中文人妻熟妇精品乱又伧| 男女久久久国产一区二区三区| XXX国产麻豆HD| 神马电影dy888午夜我不卡| 国产色婷亚洲99精品AV| 亚洲综合色五月久久婷婷| 伦理片a在线线2| 成年色黄APP下载| 午夜免费体验30分| 久久aa毛片免费播放嗯啊| 99 久久99久久精品免观看| 肉奴隷 赤坂丽在线播放| 国产手机在线精品| 曰本真人00XX动太图| 欧亚一卡二卡日本一卡二卡| 国产精品九九久久| 亚洲中文字幕日本在线观看| 男女夜晚在爽视频免费观看| 国产 欧美 亚洲 日韩视频| 亚洲欧美视频在线| 免费99精品国产人妻自在线| 高h gl肉文| 亚洲欧美综合乱码精品成人网| 蜜桃99影院| 国产成人免费全部网站| 一个人免费视频在线观看| 欧美精品成人久久网站| 国产精品免费一区二区三区四区 | 午夜理伦片免费| 久久成人亚洲| 办公室激情在线观看| 亚洲AV午夜精品麻豆AV| 嫩草亚洲国产精品| 国产精品久久久久久人妻精品蜜桃 | 少妇伦子伦精品无码| 久久AV国产麻豆HD真实| 波多结衣一区二区三区|