A. 三、內核&文件系統編譯
一、編譯官方提供的內核源碼
1、解壓官方提供的內核源碼包
2、根據官方提供的配置文件對內核進行配置,方式如下
make ARCH=arm xxxxx_defult_config
cp arch/arm/xxxxx_config .config
3、打開圖形界面對內核進行配置,根據需要增加或者刪除模塊和其他內容
4、對內核進行編譯
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux-uclibcgnueabi- uImage -j6
或者編輯Makefile文件,對其中的ARCH變數和CROSS_COMPILE變數進行修改,然後執行make uImage
5、在編譯編譯的時候回出現mkimage命令缺失,這個命令是UBootr提供的,在編譯的UBoot路徑下面找到這個命令,即可直接使用
6、編譯的時候各個方面需要一致性,
1、編譯的內核的交叉編譯工具鏈如果支持硬體浮點數運算那麼在配置內核的時候也需要添加硬體浮點數的支持
Kernel Features --->
[*] Use the ARM EABI to compile the kernel
2、在編譯的內核的時候注意保持不要做太多的修改,否則會出問題
7、編譯內核模塊
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux-uclibcgnueabi- moles -j6
8、安裝內核模塊到指定的目錄中去
make moles_install ARCH=arm CROSS_COMPILE=arm-hisiv300-linux-uclibcgnueabi- INSTALL_MOD_PATH=/home/fu/hisi/kernel/build
9、不要採用內核模塊安裝的命令來安裝內核,因為內核不需要安裝,在arch/arm/boot/uImage就是所需要的內核文件
二、編譯官方提供的busybox來構建根文件系統
1、解壓需要編譯的busybox源碼
2、進入源碼中對busybox進行配置,主要是配置交叉編譯工具鏈
Busybox Settings --->Build Options ---> 下面有關於busybox是否配置為採用共享庫的模式,還有添加交叉編譯工具鏈的前綴
3、配置需要的文件和命令進行添加或者刪除
4、然後執行命令make -jn && make install
5、創建根文件系統需要的其他的文件和目錄,在一個空白的目錄中首先拷貝busybox/_install下面的bin、sbin、usr目錄到空白目錄中,在空白目錄中創建其餘的所需要的目錄文件 bin dev etc home lib linuxrc mnt opt proc sbin sys tmp usr var等以上目錄
6、接下來在lib目錄中復制內核模塊,在編譯內核的時候模塊安裝在了指定的地方,直接拷貝過來就行。
6、創建文件系統所需要的其他文件,配置文件(最簡單的辦法就是直接復制busybox文件下面的example文件夾裡面的東西)
1、/etc/inittab 填寫或者 一下是最基本的,還有其他的需要填寫
# /etc/inittab
::sysinit:/etc/init.d/rcS //指定初始化腳本
::askfirst:-/bin/sh //指定第一次輸入回車後打開的shell
::ctrlaltdel:/sbin/reboot //指定這三個按鍵按下後的反應
::shutdown:/bin/umount -a -r //指定關機是進行的操作
2、/etc/init.d/rcS //這個就沒有詳細額硬性規定了,寫入需要初始化的東西即可
#!/bin/sh
mount -a
3、/etc/fstab //寫入mount -a是要自動掛載的文件系統
# device mount-point type options mp fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
7、拷貝需要用到的庫文件,在交叉編譯工具鏈下面存放
arm-linux-xxxxxx-gcc/lib
海思的開發板是在和tahet/lib下面,切記。
B. 海思平台配置toolchain.cmake
交叉編譯,在我們的host宿主機器上需要生成target目標機器的程序, 使用CMake的Toolchain管理這里的各種環境變數和配置,就很好.
CMake給交叉編譯預留了一個變數-- CMAKE_TOOLCHAIN_FILE , 它定義了一個文件的路徑, 這個文件就是 toolchain ,我們可以在裡面配置 C_COMPILER , CXX_COMPILER ,如果用Qt的話需要更改 QT_QMAKE_EXECUTABLE 以及如果用 BOOST 的話需要更改的 BOOST_ROOT (具體查看相關 Findxxx.cmake 裡面指定的路徑), 因此,這個 toolchain 內嵌了一系列需要改變並且需要set的交叉環境的設置.
下面歸納一些比較重要的:
下面是一個常規的配置
這樣就完成了相關toolChain的編寫,之後,你可以靈活的選擇到底採用宿主機版本還是開發機版本,之間的區別僅僅是一條 -DCMAKE_TOOLCHAIN_FILE=./cross.toolChain.cmake ,更爽的是,如果你有很多程序需要做轉移,但目標平台是同一個,你僅僅需要寫一份toolChain放在一個地方,就可以給所有工程使用。
稍微大一點的項目都會用到一些外部依賴庫或者tool,CMake提供了 FIND_PROGRAM() , FIND_LIBRARY() , FIND_FILE() , FIND_PATH() and FIND_PACKAGE() 等命令來進行外部依賴的搜索查找。
但是有個問題,假如我們在給一個ARM處理器的移動設備做交叉編譯,其中需要尋找 libjpeg.so ,假如 FIND_PACKAGE(JPEG) 返回的是 /usr/lib/libjpeg.so ,那麼這就會有問題,因為找到的這個 so 庫只是給你的宿主機系統(例如一個x86的Ubuntu主機)服務的,不能用於Arm系統。所以你需要告訴CMake去其它地方去查找,這個時候你就需要配置以下的變數了:
在工程中一般通過如下步驟, 進入工程文件, 創建 arm-himix200-linux.cmake 文件, 內容是:
然後創建build文件夾, 進行編譯(注意, 需要指定 CMAKE_MAKE_PROGRAM , 不指定的話好像編譯有問題...):
在我的 toolchain 文件中,我指定:
因為我項目中 CMakeLists.txt 中需要查找 OpenSSL 和 curl , 因此會用到CMake自帶的 FindOpenSSL.cmake 和 FindCurl.cmake 兩個腳本, 他們會用到 Findxxx 命令, 會去我指定的目錄去搜索對應的庫
https://www.cnblogs.com/rickyk/p/3875334.html
http://www.cmake.org/Wiki/CMake_Cross_Compiling
C. live555移植到hi3516做rtsp伺服器
live555庫本身實現了做rtsp伺服器,客戶端可以通過rtsp客戶端訪問伺服器上的文件並播放,支持的文件格式如下:
本次任務實現了把live555移植到嵌入式海思晶元hi3516上做rtsp伺服器,除了支持客戶端播放伺服器上上面格式文件外,另添加了實時播放hi3516攝像頭圖像與音頻的功能。
live555源碼目錄如下:
四個基本的庫分別是:BasicUsageEnvironment, groupsock, liveMedia和UsageEnvironment。
編譯後即生成這4個庫文件:
這里我只簡單說下liveMedia庫的功能,其他三個庫是live555運行的基礎庫,太(mei)簡(yan)單(jiu),就不說了。
liveMedia庫包含了音視頻相關的所有功能,包含音視頻文件的解析,RTP傳輸封裝等,我們可以看到這個目錄下有對h264、AAC等文件解析的支持:
交叉編譯過程:略
這里我主要是修改mediaServer文件夾下的示常式序,添加實時預覽攝像頭圖像與mic聲音功能。
hi3516晶元,視頻編碼格式為h264,音頻編碼格式為AAC。
1.添加音頻AAC支持
添加類 ADTSAudioLiveSource ,繼承自FramedSource
在該類的doGetNextFrame函數里實現獲取hi3516音頻數據做為rtsp伺服器音頻源。
注意點:
1.1 adts默認是帶7位元組或者9位元組的頭,傳給rtsp的時候是要去掉頭的,實際上RTSP通過rtp傳輸AAC幀的時候是不帶adts頭的,而是帶4個位元組的mpeg4-generic頭。
1.2 從FramedSource繼承而來的變數
每次doGetNextFrame幀時,從FIFO里取一個完整的AAC幀,把幀拷貝到fTo buf裡面,然後比較幀大小與fMaxSize來賦值幾個關鍵的變數:
注意,不管幀長是否大於fMaxSize,每次都需要把完整的幀拷貝到fTo指針,live555內部會根據fNumTruncatedBytes等變數自行處理分包。
1.3 doGetNextFrame函數最後不管有沒有取到幀,都需要執行FramedSource::afterGetting
1.4 采樣率,通道數,configstr等的計算
這幾個變數在mediaSubbsession建立RTPsink時要用到,它直接影響了SDP里對於AAC音頻描述欄位的產生
添加類 ,繼承自
createNewStreamSource函數創建上面的ADTSAudioLiveSource做為音頻輸入源,參數estBitrate為預估的碼率,海思AAC編碼碼率設置為24kbps,所以estBitrate設置為24.
createNewRTPSink有必要繼承,因為需要根據音頻源的采樣率、通道數等創建RTPSink.
2.添加h264支持
添加 H264FramedLiveSource ,繼承自FramedSource
unsigned maxFrameSize()函數必須繼承,裡面設置幀最大可能的大小,我設置為100000,如果不繼承就是默認的,會出現畫面馬賽克
doGetNextFrame函數裡面和AAC取幀的處理差不多,我加多了一個步驟,就是第一次取幀的時候會調用介面去產生一個關鍵幀,並且等待這個關鍵幀到來才處理,這樣連接後出圖會比較快。
添加類 ,繼承自
這個類就是實現createNewStreamSource時創建H264FramedLiveSource
3.修改DynamicRTSPServer
修改類DynamicRTSPServer,在lookupServerMediaSession函數里動點手腳,默認在這個函數裡面會根據文件名去尋找伺服器下相應的文件做為直播源,我這里比較如果是我特定的live源名字則直接返回,相應的live源創建rtsp伺服器的時候就添加好
4.初始化rtsp server
初始化rtsp伺服器,添加一個ServerMediaSession,該mediaSession添加一個和一個,然後把該mediaSession添加給rtsp伺服器。
客戶端訪問 rtsp://x.x.x.x/ch0.live 時就可以看到實時的攝像頭圖像與聲音啦!
D. 面試華為公司自我介紹_應聘華為公司自我介紹怎麼說
想到華為公司工作,必須通過 面試 官的考驗, 自我介紹 就是第一關。下面我為你帶來面試華為公司自我介紹的內容,希望你們喜歡。
面試華為公司自我介紹篇1
good morning !
it is really my honor to have this opportunity for an interview, i hope i can make a good performance today. i'm confident that i can succeed.
now i will introce myself briefly.i am 26 years old,born in shandong province . (general introction)
i was graated from qing university. my major is electronic.and i got my bachelor degree after my graation in the year of 2003. ring university, i spent most of my time on study so that i have passed cet4/6 . and acquired basic knowledge of my major.(ecation background)
in july 2015, i began work for a small private company as a technical support engineer in qing.because i'm capable of more responsibilities, so i decided to change my job. and in august 2004,i left qing to beijing and worked for a foreign enterprise as an automation software test engineer.because i want to change my working environment, i'd like to find a job which is more challenging. moreover motorola is a global company, so i feel i can gain the most from working in this kind of company ennvironment. that is the reason why i come here to compete for this position. (research experience and academic activity)
i think i'm a good team player and i'm a person of great honesty to others. also i am able to work under great pressure.
that’s all. thank you for giving me the chance.
面試華為公司自我介紹篇2大家好,很高興見到你們!
我叫##,來自##大學,是即將17年 畢業 的碩士研究生,研究生期間主要做圖像處理、機器視覺方面的工作,所以我的求職意向是媒體演算法。我的本科也是在##大學理學院讀的,專業是信息與計算科學,主要學一些數學和計算機方面的課程,所以我相信自己有比較不錯的編程基礎。
自己比較喜歡編程,對機器視覺和大數據開發這些這些人工只能領域很感興趣,所以自己業余時間自學了Linux、shell腳本、python語言,並且研究生期間有一個課題是在ARM平台中做的,所以我對ARM平台的交叉編譯也有一定的了解。在學校做的三個項目都是關於目標檢測識別的,都是基於C++和計算機視覺庫OpenCV做的。所以我相信自己能熟練的運用C++及OpenCV做一些圖像處理方面的工作。以上就是我的相關介紹,很榮幸能參加這個面試。謝謝!!!
對華為的了解:
首先眾所周知華為是一個大的平台,經營范圍很廣,並在業內都處於領先的地位,主要經營電信網路設備,已經成為電信設備商的老大。同時華為也有自己的手機品牌和晶元研究。我用的手機就是華為榮耀,感覺相當好用,並且手機用的是華為自己生研究生產的海思晶元,說明華為的技術很牛,是一個優秀的企業。
並且覺我從在華為工作的同學那了解到,華為的氛圍相對比較更像大學,非常單純,同事之間的關系相對比較簡單,並且公司有良好的人才培養體系,在里邊,新員工可以快速成長,有很多學習和鍛煉的機會,有機會接觸到業界的核心技術和最前沿的技術理論。總而言之,華為是我嚮往的公司,希望自己能有機會到里邊工作。謝謝!!!
關於面試華為公司自我介紹相關感想我早在研一的時候就得知華為了。她是中國通信行業的驕傲,她創造了一個奇跡。她有一個完善的培訓機制,她給中國培養了大批的IT人才。她是有志青年嚮往的聖地。每年我們學校都有大批的學生進入華為工作。由於我的期望工作地點是西安,在西安的IT行業中比較好的就數中興和華為了。中興和華為都是通訊行業的佼佼者。它們不但在業務上是競爭對手,在人才招聘上也是半斤八兩。去年,中興先於華為校園招聘的。今年的校園招聘啟動儀式華為早於中興,並且華為更新了招聘方式,今年沒有筆試環節了直接是技術面試(我應聘的是軟體研發崗位)。下面說一說華為招聘過程:
我是10月20號晚上11:00左右接到簡訊讓我第二天9:00到西安賓館參見技術面試(中興和華為的通知都是在晚上12:00左右)。我們班有在昨天就接到通知的,我有預感今天晚上就要通知的,所以我在中午就准備好了去華為面試的行裝。第二天6:10就起床了,坐上去市裡的916班車,大約8:40就到西安賓館了。到了西安賓館好多人已經在那裡等待了。先是交簡歷等待,沒過長時間就有一個mm點到我的名字,跟著她從一個大廳到了另一個大廳,然後面試官叫我的名字,我跟了進去。面試的地方是在一個大廳里進行的,給我的感覺就像菜市場一樣混亂。在廳里臨時排了幾十張桌子一個挨著一個。面試官還是很禮貌的,先讓請坐。然後面試開始。先是一個自我介紹,我在之前已經准備過了,很順利過去了。然後讓我介紹自己做過的項目。我講了一會。面試官好像聽不懂,就問你用了什麼演算法了嗎?我回答我所用的所發。他貌似不知道就說。我們招軟體研發是要編程的,我出一個編程題目吧!我說好的。他給我出了一個文件處理的程序,我用半個小時編好了,然後給他講。將講完了,然後又給我出。等我出來時我同學說你怎麼這么長時間,我看看時間將近2個小時。我同學20分鍾就搞定了,他們都是隨便問問。估計是因為面試我的比較年輕的緣故吧。就這樣順利通過了技術面。大概沒等多長時間就點到我的名字說等下一面。二面就是有名的“群毆”,十二個人分兩組。在二面之前,MM問我們有沒有認識的(認識的不能一組的),我們都說沒有。進入一個會議室,有三個面試官。在U型桌對面坐一排坐6個人。我隨意的早了個位坐下。在一張紙上做自己的名片。做好之後。每個人1分鍾的自我介紹,要包括自己的優缺點。介紹之後。每兩人一份材料,是關於成功的因素。上面羅列了成功的一些因素。首先是自己排序,然後交上去。然後小組討論。最後每個小組拿出一個方案。在小組討論中,我發揮的比較好。首先我們做的一個一直說我們要統一。我們找出了一個記錄比較快的做記錄。大的方向是我提出的。很快我們統一了意見。然後是每個小組選出代表陳述自己小組的決定。面試官指定讓我陳述。我站起來,由於有些緊張再加上記錄的有些潦草。我沒有完全按記錄紙上的讀,我旁邊的一個哥們給我指點,讓面試官看見了。我陳述完畢後,面試官問了那個哥們你剛才給~~說什麼呢?他說我有些緊張因此沒有完全表達出我們組的意見。然後面試官問我:你接受他的意見嗎?我說接受。然後面試官說:好的。以後面試官再也沒問我問題。在 辯論 環節中,我主動發表了自己的看法。我們小組取得了勝利。然後面試官開始,挑撥對面組的成員,使他們分化相互攻擊,叫了幾個人說,你們組失敗了,我要在你們組淘汰3個人你認為要淘汰誰之類的話。這一輪我們組淘汰了一個人。對面組淘汰了3個。在這一輪中主要考擦團隊合作能力、反應能力和抗壓能力。第三輪面試是心理測試,只要真實作答一般不會淘汰的。第四關是hr面試,問問你的工作地點,家庭情況。由於我的工作地點要求的比較死。hr讓我回去等通知。之後聽說在我面試的時候西安的軟體研發就沒崗位了。等了好幾天華為簡訊說:沒有我適合的崗位。
接下來是中興通訊的筆試,具體時間記得不是很清楚了。首先是筆試,筆試的內容很多有 操作系統 、資料庫、SQL語句、數據結構、C/C++語言、JAVA語言、TCP/IP協議、通信知識和單片機等,總之考的很多。筆試還是比較重要的,中興好像是根據筆試成績來安排面試順序的。還好我的筆試成績還算可以,在筆試後第二天就通知在唐城賓館參加面試。中興的面試安排比華為的面試安排的合理,面試官通知我上午10點面試,我提前40分鍾到達,到工作人員那裡報道後,大約到我和面試官預約時間前5分鍾,工作人員就安排我到某某房間面試。到達面試官房間後就開始面試了,面試官一般有兩個並且他們每個人有一個手提電腦,簡單介紹後,面試官就讓我介紹項目,我說了些後,好像他們不太了解也就沒問。他們說::”你C++學的不錯“。我說:”還可以。“。然後,一個面試官就把 筆記本 上敲進去的程序,讓我分析。給出結果。我迅速看了看,是考察類實現的底層東西。還好我看了些。我迅速解決了,然後第二個面試官說:”看你C++學的不錯,你看看這個程序有什麼問題“。我看了看很簡單的東西。順利答了出來。然後面試官就問你有什麼要了解的?我說:”像我非通信專業出身的學生,如果進入你們單位還要學些什麼?“。其中一位面試官說:”我們單位很多崗位不一定只需要通信的學生,你的C++不錯,學好了就可以了“。然後結束第一次面試。回去等通知。到了晚上12點左右,接到通知,說第二天參加HR面試。第二天參加面試後,想一想當時就是問了些很多網站的面經中都有的問題:你簽約了嗎?有意向嗎?看過面經嗎?明年公司派你當面試官,你會怎麼選拔人才?等等。然後是 英語口語 測試,很簡單。然後是等通知。當天晚上12點左右有個MM通知我第二天去簽約。呵呵。就這樣簽了中興。
寫出來希望可以給想進入中興華為的朋友有所幫助!
猜你喜歡:
1. 公司求職自我介紹範文
2. 華為實習生面試經驗
4. it公司面試自我介紹
5. hr面試自我介紹範文
6. 公司面試自我介紹範文
E. 海思h264解碼庫可以直接在電腦上面用嗎
不行,海思的H264解碼庫是基於海思晶元,ARM架構的,在電腦上可以交叉編譯,但不能直接用。
F. 海思3516DV300搭建交叉編譯環境問題記錄
剛開始搭建海思交叉編譯環境的時候遇到問題:
安裝完arm-himix200-linux後,輸入arm-himix200-linux -v,會出現如下錯誤:
xxx@xxx-virtual-machine:~/Downloads/study3516DV300/rp-hi3516dv300-busybox/sample/hifb$ arm-himix200-linux-gcc -v
arm-himix200-linux-gcc: loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.
錯誤方法:
export LC_CTYPE=C.UTF-8
這樣做的話,arm-himix200-linux-gcc -v會顯示成功,但是當去編譯sample時候,會出現這個錯誤
collect2: fatal error: /opt/hisi-linux/x86-arm/arm-himix200-linux/host_bin/../lib/gcc/arm-linux-gnueabi/6.3.0/../../../../arm-linux-gnueabi/bin/nm terminated with signal 6 [Aborted], core mped
解決方案:
vi ~/.bashrc
最後加入這兩句,完成後保存
export LC_ALL=C
export PATH="/opt/hisi-linux/x86-arm/arm-himix100-linux/bin:$PATH"
編輯之後使環境變數生效的命令:source ~/.bashrc
之後編譯sample通過,生成sample_hifb文件。