Hi3516A开发-- 常见问题FAQs
一、查看MPP日志信息
目前日志分為 7 個等級,默認設置為等級 3。等級設置的越高,表示記錄到日志中的信息量就越多,當等級為 7 時,系統的整個運行狀態實時的被記錄到日志中,此時的信息量非常龐大,會大大降低系統的整體性能。因此,通常情況下,推薦設置為等級 3,因為此時只有發生錯誤的情況下,才會將信息記錄到日志中,輔助定位絕大多數的錯誤。
獲取日志記錄或修改日志等級時用到的命令如下:
查看各模塊的日志等級,可以使用命令 cat /proc/umap/logmpp,此命令會列出所有模塊日志等級。
修改某個模塊的日志等級,可使用命令 echo “venc=4” > /proc/umap/logmpp,其中 venc 是模塊名,與 cat 命令列出的模塊名一致即可。
修改所有模塊的日志等級,可以使用命令 echo “all=4” > /proc/umap/logmpp。
獲取日志記錄,可以使用命令 cat /dev/logmpp,此命令將打印出所有的日志信息;如果日志已讀空,命令會阻塞并等待新的日志信息,可以使用 Ctl+C 退出。
也可以使用 open、 read 等系統調用來操作/dev/logmpp 這個設備節點。
cat /proc/umap/logmpp -----LOG BUFFER STATE---------------------------------------------------------- MaxLen ReadPos WritePos ButtPos64(KB) 0 0 65536-----CURRENT LOG LEVEL--------------------------------------------------------- vb : 3 sys : 3 region : 3 chnl : 3 vpss : 3 venc : 3 vda : 3 h264e : 3 jpege : 3 vou : 3 viu : 3 rc : 3 aio : 3 ai : 3 ao : 3 aenc : 3 adec : 3 isp : 3 ive : 3 tde : 3 vgs : 3 h265e : 3
二、內存使用
1、DDR內存管理說明
1)所有DDR內存中,一部分由操作系統管理,稱為OS內存;另一部分由MMZ模塊管理,供媒體業務單獨使用,稱為MMZ內存。
2)OS內存起始地址為0x80000000,內存大小可通過bootargs進行配置,例如第三章中的setenv bootargs 'mem=64M ... ',表示分配給操作系統內存為64M,您可以根據實際情況進行調整。
可使用cat /proc/meminfo 查看內存信息
/mnt/mpp # cat /proc/meminfo MemTotal: 124164 kB MemFree: 107540 kB Buffers: 0 kB Cached: 5992 kB SwapCached: 0 kB Active: 1484 kB Inactive: 5116 kB Active(anon): 612 kB Inactive(anon): 0 kB Active(file): 872 kB Inactive(file): 5116 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 0 kB Writeback: 0 kB AnonPages: 632 kB Mapped: 652 kB Shmem: 4 kB Slab: 5212 kB SReclaimable: 780 kB SUnreclaim: 4432 kB KernelStack: 336 kB PageTables: 124 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 62080 kB Committed_AS: 1784 kB VmallocTotal: 892928 kB VmallocUsed: 10588 kB VmallocChunk: 870824 kB
使用free查看內存使用情況
/mnt/mpp # freetotal used free shared buffers Mem: 124164 16632 107532 0 0 -/+ buffers: 16632 107532 Swap: 0 0 0擴展:在/proc/meminfo 顯示的 MemTotal 為什么不等于cmdline 里的配置 mem=xxxM?
因為內核在啟動時 reserved 了一些內存,如內核的代碼段, pmem 里 reserved 的內存。我們看到的 MemTotal 的大小已經減去了內核早期保留的內存塊。
3)MMZ內存由MMZ內核模塊管理(mpp/ko_hi35xx目錄下的mmz.ko),加載mmz模塊時,通過模塊參數指定其起始地址及大小,load腳本中根據osmem大小來進行計算,例如:? ? ./load3516a -a -sensor mn34220 -osmem 64
您也可以通過修改mpp/ko目錄下load3516a腳本中的mmz模塊參數,來修改其起始地址和總大小。
4)請注意MMZ內存地址范圍不能與OS內存重疊。
load3516a腳本中的mmz模塊參數:
####################Variables Definition##########################SNS_TYPE=mn34220 # sensor typemem_total=512; # 512M, total mem mem_start=0x80000000; # phy mem startos_mem_size=64; # 64M, os mem mmz_start=0x84000000; # mmz start addr mmz_size=128M; # 128M, mmz size################################################################## 注意:
(1)用戶在配置啟動參數時需要設置OS的管理內存為64M,“setenv bootargs 'mem=64M ...”。?
(2)系統啟動后,配置load3516a腳本中指定總內存為512(mem_total=512),加載時指定osmem為64(-osmem 64),則MMZ管理的內存為448M。(如果未指定按照上面分配的) ? ?
(3)如果有特殊應用,可以自行修改load3516a腳本,進行mmz區域劃分,如“insmod mmz.ko mmz=anonymous,0,0x84000000,442M:jpeg,0,0x9fa00000,5M anony=1”。
“mmz =” 用來定義 media-mem 的分配池,格式為:
mmz=<name>,<gfp>,<phys_start_addr>,<size>:<name>,<gfp>,<phys_start_addr>:……
<name>:字符串,分配池的名字,例如 ddr。
<gfp>:數字,表示分配池的屬性,主要用于在有多種內存的單板上指定 MMZ 位于哪種內存上(比如 DDR、 SDRAM、 DDR2、 DDR3),為 0 表示自動,目前一般都直接將該值置為 0。
<phys_start_addr>: 分配池的物理起始位置, 16 進制數, 如 0x86000000; 注意 MMZ的內存區域不能與 linux 內核的內存區域重疊, MMZ 的物理起始位置就要從“內存起始地址+linux 內核使用的內存大小”開始。 在 Hi353x 平臺上,內存的起始地址固定為 0x80000000;舉例說明如下:假設單板的 bootargs 為 'mem=96M console=ttyAMA0,115200 root=xxxx', 這表示 linux 內核將使用 96M 的內存空間,那么 MMZ 的起始地址應該配置為 0x80000000+96M = 0x86000000。
<size>:分配池的大小,可以使用如下兩種表示方式: 0x100000、 1M。 注意分配池的大小加上 linux 內核的內存大小不能超過物理內存的實際大小。 比如單板上的物理內存是 256M 大小, linux 內核使用了 96M, MMZ 就只能使用最多 256-96=160M。
以上每一個參數都是必需的,參數之間用“ ,”號分隔,可以指定多個分配池,之間用“:”號分隔。 例如: modprobe mmz mmz =ddr,0, 0x86000000,64M:vdec,0, 0x8A000000, 64M。
三、如何查看和修改寄存器
在程序中可以使用 HI_SYS_ReadRegister, HI_SYS_WriteRegister 接口進行寄存器的讀寫操作。
在單板命令行下,使用工具。
單板/usr/sbin 目錄下,有一系列寄存器操作相關的工具,分別介紹如下:
| 工具 ? ? ?? | 參數 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 功能 | 備注 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? |
| hmm | 參數 1: address,必選 | 把 address 對應的地址 | 如果沒有輸入 value,himm 會把 address 對 |
| himd | 參數 1: address,必選 | 從 address 開始,以大 | 如果沒有輸入length, 那么默認打印256 字節。 |
| himd.l | 參數 1: address,必選 | 從 address 開始,以小 | 如果沒有輸入length, 那么默認打印256 字節。 |
| himc | 參數 1: address,必選 | 從 address 開始,把 | 一般僅用于物理內存內容的修改。 |
參數 address 既可以是寄存器地址,也可以是內存地址,所以以上工具也可以用于內存查看、修改。
所需寄存器在:Hi3516A/Hi3516D 專業型HD IP Camera Soc用戶指南 查找
四、查看錯誤碼
hi3516a + bt1120 (hdmi it6604e) 執行 ..../mpp/sample/vio/sample_vio 0 IsSensorInput = 5 bt656 [SAMPLE_COMM_VPSS_StartGroup]-88: HI_MPI_VPSS_CreateGrp failed with 0xa0078010! [SAMPLE_VIO_1080P_PreView]-184: start VPSS GROUP failed!
0xA0078010 HI_ERR_VPSS_NOTREADY VPSS 系統未初始化
五、查看/proc/umap/目錄文件
/proc/umap # ls acodec aenc ao h264e hifb0 isp jpege rc sys vb venc vi vpss adec ai chnl h265e higo ive logmpp rgn tde vda vgs vo
# cat /proc/umap/h264e [H264E] Version: [Hi3520A_MPP_V1.0.0.0 Debug], Build Time[Jul 13 2012, 16:36:53] -----CHN ATTR------------------------------------------------------------------ID Width Height profile MainStr RefMode BufSize ByFrame MaxStrCnt0 720 576 base Yes 1X 829440 Yes 200 -----PICTURE INFO--------------------------------------------------------------ID EncdStart EncdSucceed Lost Disc Skip BufLeak Recode RlsStr UnrdStr0 10477 10477 0 0 0 0 0 10477 0 -----STREAM BUFFER-------------------------------------------------------------ID Base RdTail RdHead WrTail WrHead DataLen BufFree 0 0xcb700000 0x7c40 0x7c40 0x7c40 0x7c40 0 829376 -----ROI INFO------------------------------------------------------------------ID index bAbsQp Qp width height startx starty -----Syntax INFO---------------------------------------------------------------ID slcsplt slcmode slcsize0 No N/A N/A -----Inter & Intra prediction INFO---------------------------------------------ID profile HWsize VWsize P16x16 P16x8 P8x16 P8x8 MvExt I16x16 Inxn Ipcm0 base 5 2 Yes Yes Yes Yes Yes Yes Yes Yes -----Syntax INFO--------------------------------------------------------------ID profile EntrpyI EntrpyP Itrans ptrans QMatrix POC DblkIdc alpha beta0 base cavlc cavlc 4x4 4x4 No 2 0 5 5
# cat /proc/umap/venc [VENC] Version: [Hi3520A_MPP_V1.0.0.0 Debug], Build Time[Jul 13 2012, 16:36:54] -----VENC CHN ATTR-------------------------------------------------------------NO. Width Height Type Field VIField StreamType ByFrame BlockFlag Sequence Registered LeftBytes LeftFrm CurPacks0 720 576 96 0 0 1 1 0 10477 1 0 0 1 -----VENC STREAM STATE------------------------------------------------------------NO. FreeCnt BusyCnt UserCnt UserGet UserRls GetTimes Interval FrameRate0 8 0 0 11737 11737 10477 5 24
與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的Hi3516A开发-- 常见问题FAQs的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习笔记(十五)——HMM序列问题和
- 下一篇: Eureka和Zookeeper注册中心