六個關(guān)鍵詞解讀運營商大數(shù)據(jù):燈塔大數(shù)據(jù)總負責人楊明川博士在會上做了《運營商大數(shù)據(jù)的六個關(guān)鍵詞》的主題演講。演講中,楊博士從三個維度,六個關(guān)鍵詞闡明了運營商大數(shù)據(jù)未來的發(fā)展現(xiàn)狀與機遇。以下為演講原文。
宏觀層面,“十三五”規(guī)劃提到的供給側(cè)改革,為大數(shù)據(jù)產(chǎn)業(yè)發(fā)展提供了三個方向,即政府治理;產(chǎn)業(yè)轉(zhuǎn)型,特別是傳統(tǒng)行業(yè)的轉(zhuǎn)型;消費升級。中觀層面,我們正在面臨一次新的產(chǎn)業(yè)革命。
依此為基礎(chǔ),我們也開發(fā)了如燈塔等的一些應(yīng)用。如何將數(shù)據(jù)資源變?yōu)閿?shù)據(jù)能力,實現(xiàn)數(shù)據(jù)和運營之間的聯(lián)系,是未來大數(shù)據(jù)產(chǎn)業(yè)發(fā)展的關(guān)鍵點。第三個關(guān)鍵詞是生態(tài)。
而真正適合大數(shù)據(jù)應(yīng)用的行業(yè)主要集中以下三個層面,一是政府治理,大到未來政府轉(zhuǎn)型治理,建立新型智慧城市,小到治安維穩(wěn)、交通管理和分析等方面都離不開大數(shù)據(jù)。在政府治理方面,大數(shù)據(jù)能夠做的事很多。
內(nèi)容來源:燈塔大數(shù)據(jù)
nginx, redis, mysql配置文件說明:nginx中etcnginxnginx.conf的常用配置及說明# 指定nginx worker進程運行用戶, 語法: user user user nginx; # worker進程數(shù), 通常設(shè)置成和
# 加載一個外部的配置文件, sites-enabled文件夾下只有一個default文件, # 這個外部的配置文件就是負責我們nginx的默認代理, 也就是server塊的配置. include etcnginxsites-enabled
nginx中etcnginxsites-enableddefault的常用配置及說明server { # nginx監(jiān)聽的ip及端口號, 可以監(jiān)聽多個 listen 127.0.0.1:80; # nginx
3# 為提高性能,mysql可以以循環(huán)方式將日志文件寫到多個文件。
# 在系統(tǒng)運行一段時間后,可以通過show processlist命令查看當前系統(tǒng)的連接狀態(tài),如果發(fā)現(xiàn)有大量的sleep狀態(tài)的連接進程,則說明該參數(shù)設(shè)置的過大,# 可以進行適當?shù)恼{(diào)整小些。
internet與中國:由于當時中國尚未正式連入internet,所以委托德國卡爾斯魯厄大學運行cn域名服務(wù)器1993年3月2日中國科學院高能物理研究所租用at&t公司的國際衛(wèi)星信道接入美國斯坦福線性加速器中心(slac)的64k
盡管如此,這條專線仍是我國部分連入internet的第一根專線中國互聯(lián)網(wǎng)連接世界1885年中國臺灣建省,首任巡撫劉銘傳派人與福州船政聯(lián)系,使用船政電報學堂畢業(yè)生為技術(shù)人員,于1887年鋪設(shè)成功中國臺灣淡水至福州川石海底電纜
此電纜毀于第二次世界大戰(zhàn)我國于1989年開始投入到全球海底光纜的投資與建設(shè)中來,并于1993年實現(xiàn)了首條國際海底光纜的登陸(中日之間c-j海底光纜系統(tǒng));隨后在1997年,我國參與建設(shè)的全球海底光纜系統(tǒng)
1998年6月18日劉強東在中關(guān)村創(chuàng)辦京東公司,代理銷售光磁產(chǎn)品1998年11月馬化騰和張志東成立深圳市騰訊計算機系統(tǒng)有限公司,oicq開通1998年12月新浪網(wǎng)成立,關(guān)鍵人物:王志東2000年1月李彥宏創(chuàng)建了百度
2003年5月阿里巴巴集團在創(chuàng)立淘寶網(wǎng)2003年10月淘寶網(wǎng)首次推出支付寶服務(wù)2004年1月京東多媒體網(wǎng)正式開通,啟用域名www.jdlaser.com2010年4月雷軍創(chuàng)辦小米2011年1月21日騰訊公司推出微信
成功運作一個開源項目的 15 個要點:運作開源項目很容易。所有你需要做的就是讓你的源代碼可用和開源,對吧?嗯,也許。其實,開源項目是否成功取決于你對項目成功的定義。且不論你是怎么定義的,創(chuàng)建開源項目需要大量的工作。
1、定義成功在考慮運作開源項目之前,你需要明確定義成功的意義。這里有很多因素要考慮。只將代碼放入可公開訪問的存儲庫就可以了,還是說你想對你的項目做更多?合作與采用對你來說重要嗎?
2、透明這一點很容易理解:我們要使得社區(qū)可以觀察和了解你正在做的事情:使用易于查找的可公開訪問的源代碼存儲庫,使用面向公眾的問題跟蹤軟件,在社區(qū)可以找到的地方公布發(fā)布計劃,以及在公共論壇捕獲會議記錄(例如歸檔郵件列表
對于許多人來說,開源的“開放”意味著開放新思想,或開放參與。參與開源項目的規(guī)則對于每個人應(yīng)該是一樣的(“公平的競爭環(huán)境”):僅僅接受幾個補丁是不夠的,你必須對新的思路點子開放。
基金會可以為你的開源項目提供可信度,然后,開源項目反過來可以為基金會提供公信力。運作開源項目包含很多工作。但是,正如我們所建議的,它所需要的工作量取決于你對項目成功的定義。
翠屏區(qū)政府公文系統(tǒng):伊春區(qū)政府辦公政務(wù)OA系統(tǒng)中tina_linux_系統(tǒng)軟件 開發(fā)指南化管理方面的重要性。首先,政府
OA辦公系統(tǒng)的作用之一是提升工作效率。傳統(tǒng)的辦公方式往往需要大量的紙質(zhì)文件和繁瑣的手工操作,而
OA辦公系統(tǒng)通過數(shù)字化處理和自動化流程,極大地簡化了
公文系統(tǒng)程。無論是文件的傳輸、審批流程的管理還是信息的查詢與共享,都可以通過
政務(wù)OA系統(tǒng)實現(xiàn)快速、高效的完成。這不僅節(jié)省了大量的時間和人力成本,還能夠提高工作效率,使政府機構(gòu)能夠更好地服務(wù)于民眾。其次,政府
OA辦公系統(tǒng)在優(yōu)化管理方面也發(fā)揮著重要的作用。政府機構(gòu)通常需要處理大量的文件和數(shù)據(jù),而這些信息的管理和整理對于機構(gòu)的運行至關(guān)重要。通過
OA辦公系統(tǒng),政府機構(gòu)能夠?qū)崿F(xiàn)對文件和數(shù)據(jù)的統(tǒng)一管理、分類存檔和快速檢索,極大地提高了信息管理的效率和準確性。同時,
政務(wù)OA系統(tǒng)還可以通過權(quán)限設(shè)置和審批流程的規(guī)范化,確保政府機構(gòu)的決策和工作程序tina_linux_系統(tǒng)軟件 開發(fā)指南
1 概述
編寫目的:本文檔作為allwinner tina linux系統(tǒng)平臺開發(fā)指南,旨在幫助軟件開發(fā)工程師、技術(shù)支持工程師快速上手,熟悉tina linux系統(tǒng)的開發(fā)及調(diào)試流程。
適用范圍:tina linux v3.5及以上版本。
2 tina系統(tǒng)資料
2.1 概述
tina sdk發(fā)布的文檔旨在幫助開發(fā)者快速上手開發(fā)及調(diào)試,文檔中涉及的內(nèi)容并不能涵蓋所有的開發(fā)知識和問題。文檔列表也正在不斷更新。
tina sdk提供豐富的文檔資料,包括硬件參考設(shè)計文檔、flash等基礎(chǔ)器件支持列表、量產(chǎn)工具使用說明、軟件開發(fā)與制定介紹文檔、芯片研發(fā)手冊等資料。
2.2 文檔列表
請以全志科技全志客戶服務(wù)平臺最新列表為準。
3 tina系統(tǒng)概述
3.1 概述
tina linux系統(tǒng)是基于openwrt-14.07的版本的軟件開發(fā)包,包含了linux系統(tǒng)開發(fā)用到的內(nèi)核源碼、驅(qū)動、工具、系統(tǒng)中間件與應(yīng)用程序包。openwrt是一個開源的嵌入式linux系統(tǒng)自動構(gòu)建框架,是由makefile腳本和kconfig配置文件構(gòu)成的。使得用戶可以通過menuconfig配置,編譯出一個完整的可以直接燒寫到機器上運行的linux系統(tǒng)軟件。
3.2 系統(tǒng)框圖
tina系統(tǒng)軟件框圖如圖所示,從下至上分為kernel && driver、libraries、system ser-vices、applications四個層次。各層次內(nèi)容如下:
kernel&&driver主要提供linux kernel的標準實現(xiàn)。tina平臺的linux kernel 采用linux3.4、linux3.10、linux4.4、linux4.9等內(nèi)核(不同硬件平臺可能使用不同內(nèi)核版本)。提供安全性,內(nèi)存管理,進程管理,網(wǎng)絡(luò)協(xié)議棧等基礎(chǔ)支持;主要是通過linux內(nèi)核管理設(shè)備硬件資源,如cpu調(diào)度、緩存、內(nèi)存、i/o等。
libraries層對應(yīng)一般嵌入式系統(tǒng),相當于中間件層次。包含了各種系統(tǒng)基礎(chǔ)庫,及第三方開源程序庫支持,對應(yīng)用層提供api接口,系統(tǒng)定制者和應(yīng)用開發(fā)者可以基于libraries層的api開發(fā)新的應(yīng)用。
system services層對應(yīng)系統(tǒng)服務(wù)層,包含系統(tǒng)啟動管理、配置管理、熱插拔管理、存儲管理、多媒體中間件等。
applications層主要是實現(xiàn)具體的產(chǎn)品功能及交互邏輯,需要一些系統(tǒng)基礎(chǔ)庫及第三方程序庫支持,開發(fā)者可以開發(fā)實現(xiàn)自己的應(yīng)用程序,提供系統(tǒng)各種能力給到最終用戶。
3.3 開發(fā)流程
tina linux 系統(tǒng)是基于 linux kernel,針對多種不同產(chǎn)品形態(tài)開發(fā)的 sdk??梢曰诒? sdk,有效地實現(xiàn)系統(tǒng)定制和應(yīng)用移植開發(fā)。
如上圖所示,開發(fā)者可以遵循上述開發(fā)流程,在本地快速構(gòu)建tina linux系統(tǒng)的開發(fā)環(huán)境和編譯
代碼。下面將簡單介紹下該流程:
檢查系統(tǒng)需求:在下載代碼和編譯前,需確保本地的開發(fā)設(shè)備能夠滿足需求,包括機器的硬件能力,軟件系統(tǒng),工具鏈等。目前tina linux系統(tǒng)只支持ubuntu操作系統(tǒng)環(huán)境下編譯,并僅提供linux環(huán)境下的工具鏈支持,其他如macos,windows等系統(tǒng)暫不支持。
搭建編譯環(huán)境:開發(fā)機器需要安裝的各種軟件包和工具,詳見開發(fā)環(huán)境章節(jié),獲知tinalinux已經(jīng)驗證過的操作系統(tǒng)版本,編譯時依賴的庫文件等。
選擇設(shè)備:在編譯源碼前,開發(fā)者需要先導出預定義環(huán)境變量,然后根據(jù)開發(fā)者根據(jù)的需求,選擇對應(yīng)的硬件板型,詳見編譯章節(jié)。
系統(tǒng)定制:開發(fā)者可以根據(jù)使用的硬件板子、產(chǎn)品定義,定制u-boot、kernel及open-wrt,請參考后續(xù)章節(jié)中相關(guān)開發(fā)指南和配置的描述。
編譯與打包:完成設(shè)備選擇、系統(tǒng)定制之后執(zhí)行編譯命令,包括整體或模塊編譯以及編譯清理等工作,進一步的,將生成的boot/內(nèi)核二進制文件、根文件系統(tǒng)、按照一定格式打包成固件。詳見編譯打包章節(jié)。
燒錄并運行:繼生成鏡像文件后,將介紹如何燒錄鏡像并運行在硬件設(shè)備,進一步內(nèi)容詳見系統(tǒng)燒寫章節(jié)。
4 tina開發(fā)環(huán)境
4.1 概述
嵌入式產(chǎn)品開發(fā)流程中,通常有兩個關(guān)鍵的步驟,編譯源碼與燒寫固件。源碼編譯需要先準備好
編譯環(huán)境,而固件燒寫則需要廠家提供專用燒寫工具。本章主要講述這如何搭建環(huán)境來實現(xiàn)tinasdk的編譯、燒寫。
4.2 編譯環(huán)境搭建.
一個典型的嵌入式開發(fā)環(huán)境包括本地開發(fā)主機和目標硬件板。
本地開發(fā)主機作為編譯服務(wù)器,需要提供linux操作環(huán)境,建立交叉編譯環(huán)境,為軟件開發(fā)提供代碼更新下載,代碼交叉編譯服務(wù)。
本地開發(fā)主機通過串口或usb與目標硬件板連接,可將編譯后的鏡像文件燒寫到目標硬件板,并調(diào)試系統(tǒng)或應(yīng)用程序。
4.2.1 開發(fā)主機配置.
tina linux sdk是在ubuntu14.04開發(fā)測試的,因此我們 推薦使用ubuntu 14.04 主機環(huán)境進行源碼編譯,其他版本沒有具體測試,可能需要對軟件包做相應(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í)行以下命令安裝:
代碼語言:javascript
復制
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í)行下面命令安裝軟件包:
代碼語言:javascript
復制
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通過全志代碼服務(wù)器對外發(fā)布??蛻粜枰驑I(yè)務(wù)/技術(shù)支持窗口申請sdk下載權(quán)限。申請需同步提供ssh公鑰進行服務(wù)器認證授權(quán),獲得授權(quán)后即可同步代碼。
5.3 sdk結(jié)構(gòu)
tina linux sdk主要由構(gòu)建系統(tǒng)、配置工具、工具鏈、host工具包、目標設(shè)備應(yīng)用程序、文檔、腳本、linux內(nèi)核、bootloader部分組成,下文按照目錄順序介紹相關(guān)的組成組件。
代碼語言:javascript
復制
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文件。主要的功能是:
檢測當前的編譯環(huán)境是否滿足tina linux的構(gòu)建需求。
生成host包編譯規(guī)則。
生成工具鏈的編譯規(guī)則。
生成target包的編譯規(guī)則。
生成linux kernel的編譯規(guī)則。
生成系統(tǒng)固件的生成規(guī)則。
代碼語言:javascript
復制
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中配置菜單的界面以及一些固定的配置項,該配置菜單基于內(nèi)
核的mconf規(guī)格書寫。
代碼語言:javascript
復制
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目錄。
代碼語言:javascript
復制
device/
└── config
├── chips
├── common
└── rootfs_tar
快捷跳轉(zhuǎn)命令:cconfigs
5.3.4 docs目錄
docs目錄主要存放用于開發(fā)的文檔,以markdown格式書寫。
本目錄不再更新,請以全志客戶服務(wù)平臺系統(tǒng)文檔為準。
代碼語言:javascript
復制
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等代碼。
代碼語言:javascript
復制
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機器上的軟件包源碼和編譯規(guī)則,目錄按照目標軟件包的功能進行分
類。
代碼語言:javascript
復制
package/
├── allwinner
├── base-files
├── devel
├── dragonst
├── firmware
├── kernel
├── ......
└── utils
5.3.7 prebuilt目錄
prebuild目錄存放預編譯交叉編譯器,目錄結(jié)構(gòu)如下。
代碼語言:javascript
復制
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)的腳本。
代碼語言:javascript
復制
scripts/
├── arm-magic.sh
├── brcmimage.pl
├── bundle-libraries.sh
├── checkpatch.pl
├── clang-gcc-wrapper
├── cleanfile
├── clean-package.sh
├── cleanpatch
├── ......
5.3.9 target目錄
target目錄用于存放目標板相關(guān)的配置以及sdk和toolchain生成的規(guī)格。
代碼語言:javascript
復制
target/
├── allwinner
├── config.in
├── imagebuilder
├── makefile
├── sdk
└── toolchain
快捷跳轉(zhuǎn)命令:cdevice。
5.3.10 toolchain目錄.
toolchain目錄包含交叉工具鏈構(gòu)建配置、規(guī)則。
代碼語言:javascript
復制
toolchain/
├── binutils
├── config.in
├── fortify-headers
├── gcc
├── gdb
├── glibc
├── info.mk
├── insight
├── kernel-headers
├── makefile
├── musl
└── wrapper
5.3.11 tools目錄.
tools目錄用于存放host端工具的編譯規(guī)則。
代碼語言:javascript
復制
tools/
├── autoconf
├── automake
├── aw_tools
├── b43-tools
├── ......
5.3.12 out目錄.
out目錄用于保存編譯相關(guān)的臨時文件和最終鏡像文件,編譯后自動生成此目錄,例如編譯方案
r328s2-perf1。
代碼語言:javascript
復制
out/
├── r328s2-perf
└── host
其中host目錄用于存放host端的工具以及一些開發(fā)相關(guān)的文件。
r328s2-perf1目錄為方案對應(yīng)的目錄。方案目錄下的結(jié)構(gòu)如下:
代碼語言:javascript
復制
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ū)默認為squashfs格式。
r328s2-perf1-zimage為內(nèi)核的zimage格式鏡像,用于進一步生成uimage。
r328s2-perf1-uimage為內(nèi)核的uimage格式鏡像,若配置為uimage格式,則會拷貝成boot.img。
r328s2-perf1-boot.img為內(nèi)核的boot.img格式鏡像,若配置為boot.img格式,則會拷貝成boot.img
compile_dir為sdk編譯host,target和toolchain的臨時文件目錄,存有各個軟件包的源碼。
staging_dir為sdk編譯過程中保存各個目錄結(jié)果的目錄。
packages目錄保存的是最終生成的ipk軟件包。
tina_r328s2-perf1_uart0.img為最終固件包(系統(tǒng)鏡像),串口信息通過串口輸出
若使用pack -d,則生成的固件包為xxx_card0.img,串口信息轉(zhuǎn)遞到tf卡座輸出。
快捷跳轉(zhuǎn)命令:cout。
5.4 sdk更新
sdk更新分為兩類:一類是以補丁的形式發(fā)布到一號通,發(fā)布后系統(tǒng)以郵件形式通知開發(fā)者;另一類是定期(半年或季度)的小版本迭代升級,將過往的補丁合入到sdk中,發(fā)布后以系統(tǒng)郵件通知開發(fā)者,可基于干凈的sdk包通過repo sync命令更新。
5.5 問題反饋
allwinner提供全志客戶服務(wù)平臺(https://open.allwinnertech.com),用來登記客戶遇到的
問題以及解決狀態(tài)。方便雙方追蹤,使問題處理更加高效。后續(xù)sdk問題、技術(shù)問題、技術(shù)咨詢
等都可以提交到此系統(tǒng)上,allwinner技術(shù)服務(wù)會及時將問題進行分發(fā)、處理和跟蹤。
注:系統(tǒng)登錄帳號需要與allwinner開通確認。
6 tina編譯打包
6.1 概述
6.2 編譯系統(tǒng)
代碼語言:javascript
復制
(1) source build/envsetup.sh
(2) lunch
(3) make [-jn]
(4) pack [-d]
其中,
步驟(1)建立編譯環(huán)境,導出編譯變量。
步驟(2)提示需要選擇你想要編譯的方案。
步驟(3)參數(shù)n為并行編譯進程數(shù)量,依賴編譯服務(wù)器cpu核心數(shù),如 4 核pc,可"make -j4"
步驟(4)打包固件,-d參數(shù)使生成固件包串口信息轉(zhuǎn)到tf卡座輸出。
編譯完成后系統(tǒng)鏡像會打包在out/<board>/目錄下
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平臺對cpus代碼環(huán)境的代稱,主要功能是負責休眠,關(guān)機等底層操作。它包含
cpus運行所需的驅(qū)動,庫及工具鏈等,編譯產(chǎn)生scp.bin,然后打包在tina鏡像中,有boot-
loader在啟動時加載到cpus域運行。
tina中提供了如下與arisc相關(guān)的跳轉(zhuǎn)、編譯命令
命令
命令有效目錄
作用
carisc
tina下任意目錄
跳轉(zhuǎn)到cpus代碼工程目錄
mkarisc
tina下任意目錄
編譯cpus代碼
在tina中,編譯arisc代碼有兩種方式,如下:
第一種方式,跳轉(zhuǎn)到arisc代碼路徑下,使用make編譯
arisc代碼庫具有獨立的工具鏈和構(gòu)建體系,因此對arisc代碼的編譯,也可以cd到對應(yīng)的路徑
下,執(zhí)行make命令。但需注意,此時需要手動將生成的scp.bin文件拷貝到sdk的bin文件
路徑下,覆蓋對應(yīng)的文件(一般路徑是tina/device/config/chips/${平臺名}/bin)。
操作如下,
代碼語言:javascript
復制
step1
使用carisc或cd命令跳轉(zhuǎn)到arisc代碼環(huán)境下,一般為tina/lichee/arisc/ar100s。
step2
生成必要的配置。在arch/configs/下,存在許多defconfig默認配置文件,可根據(jù)axp型號選擇使用,例如make sun50iw10p1_axp803_defconfig。此操作將會在arisc根目錄生成.config。
step3
修改默認配置,可使用make menuconfig。此操作會生成配置菜單,按需選擇配置即可,該操作會修改.config。如需重新使用默認配置,重新執(zhí)行step2即可。
step4
使用make命令編譯
step5
將scp.bin拷貝到tina的bin目錄,即cbin可跳轉(zhuǎn)的目錄即可。如/tina/device/config/chips/r818/binstep6
若需清理工程,可使用make clean
step7
如需提交defconfig配置修改,可使用make savedefconfig命令。此命令會根據(jù).config在arisc根目錄生成 defconfig。將defconfig拷貝到arch/configs/下,覆蓋對應(yīng)配置文件即可。
注意:
一般來說,arisc執(zhí)行的功能較為底層,多與休眠,關(guān)機等操作相關(guān),對穩(wěn)定性要求較高。我們不
建議客戶自己修改任何相關(guān)配置和代碼,如必須,請與我司聯(lián)系或執(zhí)行足夠的穩(wěn)定性測試。
第二種方式,使用mkarisc命令
如上述方法所述,tina為了解決arisc編譯后還需手動拷貝的問題,tina提供了這個快捷命令
mkarisc。需要指出的是:目前只支持r818、mr813的arisc代碼編譯。
操作如下,較為簡單
代碼語言:javascript
復制
step1
配置tina環(huán)境,如soure build/envsetup.sh, lunch等操作。
step2
使用mkarisc編譯即可或直接編譯tina,在編譯tina時,也會自動調(diào)用mkarisc命令。
注意:
使用mkarisc命令編譯時,會自動讀取board.dts獲取axp型號,然后使用對應(yīng)的默認配置文
件編譯。如board.dts中指定使用“x-powers,axp803”時,mkarsic命令會使用arisc工程環(huán)
境下的sun50iw10p1_axp803_defconfig配置文件編譯。此時,若您需要修改該arisc配置,
只能先修改該配置文件后編譯,除此外不接受其他配置修改的方式。
6.6 編譯e907固件(v85x平臺異構(gòu)amp核)
e907是v85x平臺amp cpu的代稱,其主要功能是提供通用算力補充、輔助linux實現(xiàn)快起
等。它包含e907運行所需的驅(qū)動、庫及工具鏈等,編譯產(chǎn)生riscv.fex,打包到tina鏡像中,
由bootloader在啟動時加載到risc-v核上運行。
在tina sdk中,編譯e907 riscv代碼如下:
e907 riscv 代碼庫具有獨立的工具鏈和構(gòu)建體系,因此對 e907 固件的編譯,也可以跳
轉(zhuǎn)到對應(yīng)的路徑下,執(zhí)行命令。但需注意,此時需要手動將生成的 melis30.elf 文件拷貝
到 sdk 的 bin 文件路徑下,覆蓋對應(yīng)的文件(一般路徑是 device/config/chips/${平臺
名}/configs/default/riscv.fex)。
操作如下,
代碼語言:javascript
復制
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
如需減少存儲空間,可裁剪調(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)用
請確保進行過一次固件的編譯,確保sdk基礎(chǔ)已經(jīng)編譯,才能單獨重編應(yīng)用包。重編應(yīng)用包應(yīng)用場景一般為: 只修改了應(yīng)用,不想重新燒寫固件,只需要安裝應(yīng)用安裝包即可 。請確保在編譯前已加載tina環(huán)境:
代碼語言:javascript
復制
$ source build/envsetup.sh
$ lunch
6.7.1 方法一
當在應(yīng)用包的目錄(包括其子目錄)中,可執(zhí)行
代碼語言:javascript
復制
$ mm [-b]
=> b參數(shù)則先clean此應(yīng)用臨時文件再編譯
示例:假設(shè)軟件包路徑為:tina/package/utils/rwcheck,則:
代碼語言:javascript
復制
$ cd tina/package/utils/rwcheck
$ mm -b
編譯出應(yīng)用安裝包保存路徑為:
代碼語言:javascript
復制
tina/out/<方案>/packages/base
6.7.2 方法二
當在tina的根目錄,可執(zhí)行:
代碼語言:javascript
復制
$ make <應(yīng)用包的路徑>/clean,==>清空應(yīng)用包臨時文件
$ make <應(yīng)用包的路徑>/install,==>編譯軟件包
或者
$ make <應(yīng)用包的路徑>/{clean,install},==>先清空臨時文件再編譯
示例:假設(shè)軟件包的路徑為:tina/package/utils/rwcheck,則:
代碼語言:javascript
復制
$ cd tina
$ make package/utils/rwcheck/{clean,install}
6.8 其他命令
命令
命令有效目錄
作用
make
tina根目錄 編譯整個sdk
make
menuconfig tina根目錄 啟動軟件包配置界面
make
kernel_menuconfig tina根目錄 啟動內(nèi)核配置界面
mkarisc
tina下任意目錄 編譯cpus源碼,根據(jù)axp型號選擇對應(yīng)的默認配置
printfconfig
tina下任意目錄 打印當前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的快捷命令,編譯整個sdk
p
tina下任意目錄 pack的快捷命令,打包固件
7 tina系統(tǒng)燒寫
7.1 概述
本章節(jié)主要介紹如何將構(gòu)建完成的鏡像文件(image)燒寫并運行在硬件設(shè)備上的流程。
sdk中的燒錄工具不再更新,后續(xù)會刪除,請優(yōu)先選擇從全志客戶服務(wù)平臺下載最新燒錄工具。
windows工具均集成在apst中,下載安裝apst即可,apst的工具均自帶文檔。
7.2 燒錄工具
tina提供的幾種鏡像燒寫工具介紹如表所示,用戶可以選擇合適的燒寫方式進行燒寫。
工具
運行系統(tǒng)
描述
phoenixsuit
windows
分分區(qū)升級及整個固件升級工具
phoenixcard
windows
卡固件制作工具
phoenixusbpro
windows
量產(chǎn)升級工具,支持usb一拖 8 燒錄
livesuit
ubuntu
固件升級工具
對于ubuntu:
64bit主機使用livesuitv306_for_linux64.zip。
32bit主機使用livesuitv306_for_linux32.zip。
具體燒錄工具和使用說明,請到全志客戶服務(wù)平臺下載。
7.3 進入燒錄模式.
設(shè)備需進入燒錄模式,以下幾種情況會進入燒錄模式:
brom無法讀取到boot0,例如新?lián)Q的flash不包含數(shù)據(jù),或者上電時短路flash阻斷通信。
在串口中按 2 進入燒錄。即,在串口工具輸出框中,按住鍵盤的’2’,不停輸出字符’2’,上電啟動。boot0檢測到此字符,會跳到燒錄模式。
在uboot控制臺,執(zhí)行efex。
在linux控制臺,執(zhí)行reboot efex。
adb可用的情況下,可使用adb shell reboot efex,或點擊燒錄工具上的“立即燒錄”按鈕。
當完整配置[fel_key]下fel_key_max和fel_key_min時,按下鍵值在范圍內(nèi)按鍵,之后上電。
當板子有fel按鍵時,按住fel按鍵上電。
制作特殊的啟動卡,從卡啟動再進入燒錄模式。
8 tina uboot定制開發(fā)
8.1 概述
本章節(jié)簡單介紹uboot基本配置、功能裁剪、編譯打包、常用命令的使用,幫助客戶了解tina
平臺uboot框架,為boot定制開發(fā)提供基礎(chǔ)。
目前tina sdk共有三版uboot,分別是uboot-2011、uboot-2014、uboot-2018,分別在不
同硬件平臺上使用,客戶拿到sdk需要根據(jù)開發(fā)的硬件平臺核對版本信息。
8.2 代碼路徑
代碼語言:javascript
復制
tinasdk/
├── brandy
│?? ├── ...
│?? ├── u-boot-2011
│?? └── u-boot-2014
├── brandy-2.0
│?? ├── ...
│?? └── u-boot-2018
8.3 uboot功能
tinasdk中,bootloader/uboot在內(nèi)核運行之前運行,可以初始化硬件設(shè)備、建立內(nèi)存空間映
射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適狀態(tài),為最終調(diào)用linux內(nèi)核準備好正確的環(huán)境。
在tina系統(tǒng)平臺中,除了必須的引導系統(tǒng)啟動功能外,uboot還提供燒寫、升級等其它功能。
引導內(nèi)核能從存儲介質(zhì)(nand/mmc/spinor)上加載內(nèi)核鏡像到dram指定位置并運行。
量產(chǎn)&升級包括卡量產(chǎn),usb量產(chǎn),私有數(shù)據(jù)燒錄,固件升級。
電源管理包括進入充電模式時的控制邏輯和充電時的顯示畫面。
開機提示信息開機能顯示啟動logo圖片(bmp格式)。
fastboot功能實現(xiàn)fastboot的標準命令,能使用fastboot刷機。
8.4 uboot配置
以uboot-2018為例,各項功能可以通過defconfig或配置菜單menuconfig進行開啟或關(guān)閉,
具體配置方法如下:
8.4.1 defconfig方式
8.4.1.1 defconfig配置步驟
vim /tinasdk/lichee/brandy2.0/u-boot-2018/configs/sun8iw18p1_defconfig (若是spinor方案則打開sun8iw18p1_nor_defconfig)
打開sun8iw18p1_defconfig或sun8iw18p1_nor_defconfig后,在相應(yīng)的宏定義前去掉或添加"#"即可將相應(yīng)功能開啟或關(guān)閉。
如上圖,只要將config_sunxi_nand前的#去掉即可支持nand相關(guān)功能,其他宏定義的開啟關(guān)閉也類似。
8.4.1.2 defconfig配置宏介紹.
如下圖是sun8iw18p1_defconfig/sun8iw18p1_nor_defconfig中的基本宏定義的介紹:
8.4.2 menuconfig方式
通過menuconfig方式配置的方法步驟如下:
代碼語言:javascript
復制
cd /tinasdk/lichee/brandy2.0/u-boot-2018/
make arch=arm menuconfig或make arch=arm64 menuconfig
注意:arm針對 32 位平臺,arm64針對 64 位平臺。
執(zhí)行上述命令會彈出menuconfig配置菜單,如下圖所示,此時即可對各模塊功能進行配置,配
置方法menuconfig配置菜單窗口中有說明。
8.5 uboot編譯
8.5.1 方法一
在tina目錄下即可編譯uboot。
代碼語言:javascript
復制
source build/envsetup.sh(見詳注1)
lunch (見詳注2)
muboot(見詳注3)
詳注:
1 加載環(huán)境變量及tina提供的命令。
2 輸入編號,選擇方案。
3 編譯uboot,編譯完成后自動更新uboot binary到tinasdk/target/allwinner/$(board)-common/bin/。
8.5.2 方法二
代碼語言:javascript
復制
source build/envsetup.sh(見詳注1)
lunch (見詳注2)
cboot(見詳注3)
make xxx_config(見詳注4)
make -j
詳注:
3 跳轉(zhuǎn)到uboot源碼目錄。
4 選擇方案配置,如果是使用norflash,運行make xxx_nor_config。
5 執(zhí)行編譯uboot的動作。
8.6 uboot的配置
8.6.1 sys_config配置.
sys_config.fex是對不同模塊參數(shù)進行配置的重要文件,對各模塊重要參數(shù)的更改及更新提供了
極大的方便。其文檔存放路徑:
代碼語言:javascript
復制
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)成,主鍵是某項功能或模塊的主標識,由[]括起,子鍵是對
該功能或模塊中各個參數(shù)的配置項,如下圖所示,dram_para是主鍵,dram_clk、dram_type
和dram_zp是子鍵。
8.6.1.2 sys_config.fex配置實例
[platform]:平臺相關(guān)配置項。
例如,debug_mode =1表示開啟uboot的調(diào)試模式,開啟后會在log中打印出對應(yīng)的調(diào)試信
息。next_work=2表示燒錄完成后系統(tǒng)的下一步執(zhí)行動作(0x1表示正常啟動、0x2表示重啟、
0x3表示關(guān)),其他配置可以查看[platform]前的提示說明。
[target]:目標平臺相關(guān)功能配置項
上圖中的可以通過配置boot_clock配置cpu的頻率大小。
[uart_para]:串口配置項,uart_para配置項是uboot串口打印調(diào)試時用到的重要配置
上圖中的uart_debug_port=0表示使用的是uart0,uart_debug_tx/uart_debug_rx配置的gpio口(pa04/pa05)需要根據(jù)對應(yīng)的gpio datasheet進行配置。
8.6.1.3 sys_config.fex解析流程
在uboot2014/2018中sys_config.fex最終會被轉(zhuǎn)化為dtb(device tree binary,linux內(nèi)核配置方式),dtb最終會被打包燒錄至flash中,啟動過程中會將該文件加載至內(nèi)存,之前在sys_config.fex中配置的參數(shù)已轉(zhuǎn)化為dtb節(jié)點,最終會調(diào)用fdt_getprop_32()函數(shù)對dtb中的節(jié)點進行解析。
8.6.2 環(huán)境變量配置.
uboot的環(huán)境變量就是一個個的鍵值對,操作接口為:getenv(),setenv(),saveenv()。環(huán)境變量的形式:
代碼語言:javascript
復制
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各個功能模塊按順序組合在一起執(zhí)行,從而完成某個重要功能。
例如,如果執(zhí)行了上述提到的 boot_normal 環(huán)境變量對應(yīng)的命令,uboot 則會先調(diào)用
sunxi_flash命令從存儲介質(zhì)的boot分區(qū)上加載內(nèi)核到dram的0x40007800位置;然后調(diào)
用boota命令完成內(nèi)核的引導。
uboot啟動時調(diào)用環(huán)境變量方式下如圖所示:
8.6.2.2 環(huán)境變量配置示例介紹.
tinasdk中,環(huán)境變量配置文件保存在tinasdk/target/allwinner/$(board)/configs/env.cfg
文件,用戶使用的時候,可能會看到env-4.4.cfg、env-4.9.cfg等文件,env-xxx后綴數(shù)字表示在不同內(nèi)核版本上的配置。打開后其內(nèi)容示例如下,
bootdelay=0,改環(huán)境變量bootdelay(即boot啟動時log中的倒計時延遲時間)值的大小,為便于調(diào)試,bootdelay的值一般不要等于 0 ,這樣在小機上電后按下任意鍵才能進入uboot shell命令狀態(tài)。
boot_normal=sunxi_flash read 40007800 boot;boota 4000780,設(shè)置啟動內(nèi)核命令,即將boot分區(qū)讀到內(nèi)存0x40007800地址處,然后從內(nèi)存0x40007800地址處啟動內(nèi)核。
setargs_nand=setenv bootargs earlyprintk=${earlyprink}… ,設(shè)置內(nèi)核相關(guān)環(huán)境變量,該變量在啟動至內(nèi)核的log中會打印處理,即cmdline如下圖:
loglevel=8,設(shè)置內(nèi)核log打印等級。
8.6.3 sys_partition.fex分區(qū)配置
分區(qū)配置文件是一個規(guī)劃磁盤分區(qū)的文件,燒錄過程會按照該分區(qū)配置文件將各分區(qū)數(shù)據(jù)燒錄至flash中。
tinasdk中,分區(qū)配置文件路徑tinasdk/target/allwinner/$(board)/configs/sys_partition.fex。有些方案可以看到sys_partition.fex、sys_partition_nor.fex兩個分區(qū)配置文件,若是打包tina非nor固件,則使用的是sys_partition_linux.fex配置文件,若是打包nor固件,則使用的是sys_partition_nor.fex。
8.6.3.1 sys_partition.fex分區(qū)配置介紹
一個分區(qū)的屬性,包含名稱、分區(qū)大小、下載文件與用戶屬性。以下是文件中所描述的一個分區(qū)的屬性:
name,分區(qū)名稱由用戶自定義。當用戶在定義一個分區(qū)的時候,可以把這里改成自己希望的字符串,但是長度不能超過 16 個字節(jié)。
size,定義該分區(qū)的大小,以扇區(qū)的單位(1扇區(qū)=512bytes,如上圖給env 分區(qū)分配了32768 個扇區(qū),即32768*512/1024/1024 = 16m),注意,為了字節(jié)對齊,這里分配的扇區(qū)大小應(yīng)當能整除 128 。
downloadfile,下載文件的路徑和名稱。可以使用相對路徑,相對是指相對于image.cfg文件所在分區(qū)。也可以使用絕對路徑。
user_type,提供給操作系統(tǒng)使用的屬性。目前,每個操作系統(tǒng)在讀取分區(qū)的時候,會根據(jù)用戶屬性來判斷當前分區(qū)是不是屬于自己的然后才進行操作。這樣設(shè)計的目的是為了避免在多系統(tǒng)同時存在的時候,a操作系統(tǒng)把b操作系統(tǒng)的系統(tǒng)分區(qū)進行了不應(yīng)該的讀寫操作,導致b操作系統(tǒng)無法正常工作。
更具體的說明,可參考《tinalinux存儲管理開發(fā)指南》。
9 tina kernel定制開發(fā)
9.1 概述
本章節(jié)簡單介紹kernel基本配置、功能裁剪、常用命令的使用,幫助客戶了解tina平臺linux
內(nèi)核,為內(nèi)核定制開發(fā)提供基礎(chǔ)。
目前tina sdk共有 4 版linux kernel,分別是linux-3.4、linux-3.10、linux-4.4、linux-
4.9,分別在不同硬件平臺上使用,客戶拿到sdk需要根據(jù)開發(fā)的硬件平臺核對內(nèi)核信息。
9.2 代碼路徑
代碼語言:javascript
復制
tinasdk/
├── ...
├── linux-3.10
├── linux-3.4
├── linux-4.4
└── linux-4.9
9.3 模塊開發(fā)文檔.
詳閱bsp開發(fā)文檔,文檔目錄包括常用內(nèi)核模塊使用與開發(fā)說明。
9.4 內(nèi)核配置
客戶在定制化產(chǎn)品時,通常需要更改linux內(nèi)核配置,在tinasdk中,打開內(nèi)核配置的方式如
下,
代碼語言:javascript
復制
croot
make kernel_menuconfig
執(zhí)行完后,shell控制臺會跳出配置菜單。如下圖所示,
10 tina系統(tǒng)定制開發(fā)
10.1 tina procd-init與busybox-init切換.
tina默認為procd-init:
代碼語言:javascript
復制
make menuconfig進行配置:
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自啟動方式配置如下:
代碼語言:javascript
復制
make menuconfig進行配置:
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中一個軟件包目錄下通常包含如下兩個目錄和一個文件:
代碼語言:javascript
復制
package/<分類>/<軟件包名>/makefile
package/<分類>/<軟件包名>/patches/ [可選]
package/<分類>/<軟件包名>/files/ [可選]
其中,
patches 保存補丁文件,在編譯前會自動給源碼打上所有補丁
files 保存軟件包的源碼,在編譯時會對應(yīng)源碼覆蓋源碼中的源文件
makefile 編譯規(guī)則文件,
10.2.1 makefile范例
該makefile的功能是軟件源碼的準備,編譯和安裝的過程,提供給tina linux識別和管理軟件包的接口,軟件的編譯邏輯是由軟件自身的makefile決定,理論上和該makefile(該makefile只執(zhí)行make命令和相關(guān)參數(shù))無實質(zhì)關(guān)系。
詳注:
代碼語言:javascript
復制
1.如果是開源軟件,軟件包版本建議與下載軟件包的版本一致。
2.以pkg開頭的變量主要告訴編譯系統(tǒng)去哪里下載軟件包。
3.md5sum用于校驗下載下來的軟件包是否正確,如果正確,在編譯該軟件的時候,就會在pkg_build_dir下找到該軟件包的源碼。
4.package/<name>: <name>用來指定該package的名字,該名字會在配置系統(tǒng)中顯示。
5.使用依賴包的名字<name>來指定依賴關(guān)系,如果是擴展包,前面添加一個”+”號,如果是內(nèi)核版本依賴使用@linux_2_<minor version>。
6.如果該值為 1 ,該包將不會出現(xiàn)在配置菜單中,但會作為固定編譯,可選。
7.在開源軟件中一般用來生成makefile,其中參數(shù)可以通過configure_vars來傳遞。
8.在開源軟件中一般相當于執(zhí)行make,其中有兩個參數(shù)可以使用:make_flags和make_vars。
9.內(nèi)置的幾個關(guān)鍵字如下:
install_dir相當于install -d m0755
install_bin相當于install -m0755
install_data相當于install -m0644
install_conf相當于install -m0600
10.該makefile的所有define部分都是為該宏的參數(shù)做的定義.上層makefile通過調(diào)用此宏進行編譯。
10.2.2 自啟動設(shè)置
在tina linux中支持兩種格式的初始化腳本,一種是busybox式或者sysv式的初始化腳本,
一種是procd式的初始化腳本。一般我們把由初始化腳本啟動的應(yīng)用叫做服務(wù)。
初始化腳本以shell腳本的編程語言組織,shell腳本作為基礎(chǔ)知識在此不展開說明。一般情況
下,初始化腳本源碼保存在軟件的files目錄,且后綴為“.init”,例如:
代碼語言:javascript
復制
tina/package/system/fstools/files/fstab.init
在makefile的install中把初始化腳本安裝到小機端的/etc/init.d中,例如:
代碼語言:javascript
復制
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)用自啟動腳本.
手動調(diào)用方式在啟動的時候會有太多的log,且log信息已被logd守護進程收集,不利于我們
調(diào)試初始化腳本,此時可通過小機端的命令行手動調(diào)用的形式來調(diào)試,例如:
代碼語言:javascript
復制
root@tinalinux: /# /etc/init.d/fstab start
10.2.2.2 sysv格式腳本
sysv式的初始化腳本保存在小機端的/etc/init.d/目錄下,實現(xiàn)開機自啟動。下例以最小內(nèi)容的初
始化腳本作示例講解,核心是實現(xiàn)start/stop函數(shù):
代碼語言:javascript
復制
#!/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, 指明開機啟動優(yōu)先級(序列) [數(shù)值越小, 越先啟動],取值范圍0-99。
stop=15, 指明關(guān)機停止優(yōu)先級(序列) [數(shù)值越小, 越先關(guān)閉],取值范圍0-99。
depend=xxxx, 指明初始化腳本會并行執(zhí)行,通過此項配置確保執(zhí)行的依賴。
名稱
屬性
功能
start
必須實現(xiàn)
啟動一個服務(wù)
stop
必須實現(xiàn)
停止一個服務(wù)
reload
可選實現(xiàn)
重啟一個服務(wù)
enable
可選實現(xiàn)
重新加載服務(wù)
disable
可選實現(xiàn)
禁用服務(wù)
在shell里面可以使用如下的命令來操作相關(guān)的服務(wù)。
代碼語言:javascript
復制
$ root@tinalinux:/# /etc/init.d/exmple restart|start|stop|reload|enable|disable
10.2.2.3 procd格式腳本
以下例的初始化腳本作示例講解,主要是實現(xiàn)函數(shù)start_service:
代碼語言:javascript
復制
#!/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
}
詳細的介紹可以參考:https://wiki.openwrt.org/inbox/procd-init-scripts。
10.3應(yīng)用調(diào)試
新添加的軟件默認配置為不使能,此時需要手動配置使能軟件包。通過在tina的根目錄執(zhí)行
make menuconfig進入軟件包的配置界面:
軟件包的所在路徑與軟件包的makefile中的定義有關(guān),以fstools為例,在makefile中定義
為:
代碼語言:javascript
復制
define package/fstools
section:=base
category:=base system
depends:=+ubox +use_glibc:librt +nand_support:ubi-utils
title:=openwrt filesystem tools
menu:=1
endef
此時,只需要在menuconfig界面中進入basy system即可找到fstools的軟件包。
前綴符號含義:
代碼語言:javascript
復制
[*] 或<*> : 編譯進入sdk
[ ] 或< > : 不包含
支持操作:
代碼語言:javascript
復制
y或y:選擇包含
n或n:取消選擇
10.4應(yīng)用編譯
詳見重編應(yīng)用章節(jié)。
10.5應(yīng)用安裝
獲取安裝包
安裝包一般位于目錄:
代碼語言:javascript
復制
tina/out/<方案>/packages/base
安裝包命名格式為:
代碼語言:javascript
復制
<應(yīng)用名>_<應(yīng)用版本>-<應(yīng)用釋放版本>_sunxi.ipk
安裝應(yīng)用包
通過adb推送安裝包到小機:
代碼語言:javascript
復制
$ adb push <安裝包路徑> <推送到小機路徑>
安裝應(yīng)用包:
代碼語言:javascript
復制
$ opkg install <安裝包路徑>
10.6分區(qū)與掛載
升級分區(qū)
分區(qū)
功能
boot分區(qū)
存內(nèi)核鏡像
rootfs分區(qū)
基礎(chǔ)系統(tǒng)鏡像分區(qū),包含/lib,/bin,/etc等
recovery分區(qū)
存放恢復系統(tǒng)鏡像,僅大容量方案有,詳見ota文檔
extend分區(qū)
存放恢復系統(tǒng)鏡像及rootfs的usr部分,僅小容量方案有,詳見ota文檔
不升級分區(qū)
分區(qū)
功能
private分區(qū)
存儲sn號分區(qū)
misc分區(qū)
系統(tǒng)狀態(tài)、刷機狀態(tài)分區(qū)
udisk分區(qū)
用戶數(shù)據(jù)分區(qū),一般掛載在/mnt/udisk
overlayfs分區(qū)
存儲overlayfs覆蓋數(shù)據(jù)
默認掛載點
分區(qū)
掛載點
備注
/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卡掛載點
/dev/by-name/rootfs_data
/overlay
存儲overlayfs覆蓋數(shù)據(jù)
我是如何在四年時間里,從廚師轉(zhuǎn)行為 serverless 應(yīng)用開發(fā)者:當時,我開始在在家中制作些小點心賺取外快。那時候我從學校搬了出來,在搬到新住處后,我在工作的餐廳和城區(qū)的家之間往返很不便。于是我決定在餐廳做兼職,另外找一份咖啡店的工作。
因此,我給自己設(shè)下了一個任務(wù),學習有關(guān)服務(wù)器的知識以及如何針對服務(wù)器編寫代碼。我開始采用 php 構(gòu)建簡單的后端應(yīng)用,從移動測試應(yīng)用、web 窗體和 curl 命令獲取數(shù)據(jù)。
我們不僅成功遷移了應(yīng)用,還創(chuàng)建一個框架,框架中規(guī)定了相關(guān)的步驟,便于我們以后遵循這些流程來進行遷移。就這樣,我們建立起了一支創(chuàng)新團隊。我們希望通過提出創(chuàng)新的想法來讓辦公室更智能。
向無服務(wù)器開發(fā)過渡我對 serverless framework 一見傾心。我只需把精力集中在代碼上,就可讓應(yīng)用快速投入運行 —— 在人們使用的同時,我們可以不斷開發(fā)和實現(xiàn)自己的構(gòu)思。
我過去 5 個月一直在學習 serverless framework,現(xiàn)在正計劃將 serverless framework 投入到工作中,這項服務(wù)可幫助客戶構(gòu)建和遷移其應(yīng)用。
真果科技賈求真:數(shù)字新經(jīng)濟,金融新業(yè)態(tài)|騰訊saas加速器·ceo說:政令中第十四條規(guī)定“中小企業(yè)以應(yīng)收賬款擔保融資的,機關(guān)、事業(yè)單位和大型企業(yè)應(yīng)當自中小企業(yè)提出確權(quán)請求之日起30日內(nèi)確認債權(quán)債務(wù)關(guān)系,支持中小企業(yè)融資”;政令中第二十一條規(guī)定“省級以上人民政府建立督查制度
綜上,我們認為區(qū)域政府搭建政務(wù)金融科技服務(wù)平臺,行政化推動轄內(nèi)核心企業(yè)確權(quán),鏈接金融機構(gòu),為鏈屬中小微企業(yè)提供數(shù)字化融資服務(wù),構(gòu)建數(shù)字金融g2s2b業(yè)態(tài)創(chuàng)新發(fā)展模式是政府參與金融的必由之路。
面向核心企業(yè)群體中的機關(guān)、事業(yè)單位、國有企業(yè),建議積極響應(yīng)政府號召,國企擔當,去政務(wù)金融平臺實施融資確權(quán)工作。 ?
面向政府機構(gòu)、產(chǎn)業(yè)市場、金融機構(gòu),提供數(shù)字金融科技產(chǎn)品及融資運營服務(wù)。
騰訊攜手真果科技共同助力長沙市政府、湘江國投構(gòu)建完善的區(qū)塊鏈金融產(chǎn)業(yè)生態(tài),打造全國有影響力的“一區(qū)三鏈”監(jiān)管示范基地,開啟湖南數(shù)字新經(jīng)濟,產(chǎn)業(yè)金融新業(yè)態(tài)!
mysql cpu 使用率高,怎么查,怎么破:實際上我們是不是有更好的快速定位的方法
下圖我們可以看到系統(tǒng)cpu一直在 90%, 到底什么原因造成mysql的cpu 利用率一直高怎么分析。follow me.
?
數(shù)據(jù)堂:大數(shù)據(jù)產(chǎn)業(yè)調(diào)研及分析報告(145頁):大數(shù)據(jù)引發(fā)了全球范圍內(nèi)深刻的技術(shù)與商業(yè)變革,已經(jīng)成為全球發(fā)展的趨勢以及國家、企業(yè)間的競爭焦點,直接關(guān)系到國家安全、社會穩(wěn)定、經(jīng)濟發(fā)展和民生幸福等諸多方面。
圖.我國大數(shù)據(jù)產(chǎn)業(yè)鏈布局(二)我國大數(shù)據(jù)源尚待激活大數(shù)據(jù)的開放和流通是政府、企業(yè)和學術(shù)界面臨的首要挑戰(zhàn),只有多源頭、跨領(lǐng)域的關(guān)聯(lián)分析才有可能實現(xiàn)數(shù)據(jù)價值的深度挖掘,能否從多源、異構(gòu)的海量數(shù)據(jù)中快速獲得有價值信息
,將逐漸成為決定國家和企業(yè)發(fā)展水平的核心指標。
另一方面,在政府公共服務(wù)、農(nóng)業(yè)和醫(yī)療健康領(lǐng)域的應(yīng)用案例相對缺乏,我國政府和公共服務(wù)事業(yè)單位沉淀了全國近三分之一的數(shù)據(jù)(麥肯錫),但未能與廣大傳統(tǒng)行業(yè)的需求形成對接。
我國幅員遼闊、人口眾多,交通、醫(yī)療、金融及農(nóng)業(yè)等事關(guān)國計民生的領(lǐng)域匯集了海量的人口、個體行為和環(huán)境數(shù)據(jù),通過人工智能技術(shù)的應(yīng)用可以極大帶動政府決策、公共服務(wù)和傳統(tǒng)行業(yè)的發(fā)展,同時培育數(shù)據(jù)銀行和眾包平臺等產(chǎn)業(yè)模式的創(chuàng)新
轉(zhuǎn)載請注明出處,本站網(wǎng)址:
http://www.wikihumidifier.com/news_2391.html