Browse Source

soft_3rdpart:wave420l: update README.md for wave420l.

Added compiling instructions and running instructions.

Signed-off-by: samin <samin.guo@starfivetech.com>
samin 2 years ago
parent
commit
dce048a5ee
1 changed files with 115 additions and 39 deletions
  1. 115 39
      wave420l/README.md

+ 115 - 39
wave420l/README.md

@@ -10,13 +10,13 @@ firmware			固件
 
 README.md 	 本文件
 
-### wave420l代码结构
+## wave420l代码结构
 
 wave420l源码由两部分组成: 
 
-​	code/vdi/linux/driver: 编译生成vpu.ko,为wave420l的模块文件,主要功能是空间分配及映射、中断注册及平台无关功能实现。
+​	code/vdi/linux/driver: 编译生成venc.ko,为wave420l的模块文件,主要功能是空间分配及映射、中断注册及平台无关功能实现。
 
-​	code/下除vdi/linux/driver以外的目录: 编译生成sample app。主要功能是初始化vpu,设置vpu工作参数,启动vpu编码工作。
+​	code/下除vdi/linux/driver以外的目录: 编译生成sample app。主要功能是初始化venc,设置venc工作参数,启动venc编码工作。
 
 ## 代码编译
 
@@ -30,45 +30,121 @@ Wave420Driver.mak		编译linux模块驱动makefile文件
 
 Wave420Enc.mak		编译单路编码示例程序makefile
 
-### 驱动模块编译
+build.sh							工程编译脚本
 
-$ source set_env.sh 
+### 编译脚本
 
-$ make -f  Wave420Driver.mak  
+提供一键编译脚本,所有的输出文件存放在venc_driver目录中。其中驱动在venc_driver/driver目录中,其他运行时需要的应用程序、运行脚本、yuv源文件、固件等,存放在venc_driver中。
 
-编译成功后在vdi/linux/driver目录下会生成vpu.ko,在运行wave420l sample app前,需要先通过专用加载脚本加载该模块。
-
-### sample app程序编译
-
-$ source set_env.sh 	
-
-$ make -f  Wave420Enc.mak  
-
-编译成功后在code目录下会生成w4_enc_test可执行程序。
+```bash
+$ ./build.sh
+```
 
 ## wave420L运行
 
-### 1.vpu.ko加载
-
-编译生成的vpu.ko不能直接通过insmod命令加载,需要使用code\vdi\linux\driver\load.sh脚本进行加载。
-
-### 2.sample app运行
-
-运行run.sh,开始编码。具体命令如下:
-
-***./w4_enc_test --secondary-axi=0 --stream-endian=16 --frame-endian=16 --enable-lineBufInt -n25  --kbps=30 --nv21=0 --picWidth=256 --picHeight=128 --output=set1_001A.cfg.bin --cfgFileName=./cfg/set1_001A.cfg --ref_stream_path=./yuv/foreman_256x128.yuv***
-
-典型的放置目录结构如下:
-
-![image-20211013174222901](C:\Users\jiack\AppData\Roaming\Typora\typora-user-images\image-20211013174222901.png)
-
-monet.bin/monet.h:与wave420l/firmware目录下内容对应
-
-w4_enc_test:sample app测试程序
-
-vpu.ko:vpu驱动程序
-
-load.sh:vpu.ko加载脚本
-
-其它:与code目录下相同名字的内容对应
-
+### 1. venc.ko加载
+
+编译生成的venc.ko通过专用的加载脚本进行加载(load.sh)/卸载(unload.sh)。
+
+脚本存放在目录venc_driver/driver中。
+
+```bash
+# cd venc_driver/
+# ls
+cfg                  enc_352x288_8b.sh    stream
+driver               enc_4096x2160_8b.sh  w4_enc_test
+enc_1920x1080_8b.sh  monet.bin            yuv
+enc_256x128.sh       output
+enc_352x288_10b.sh   run.sh
+# cd driver/
+# ls
+load.sh    unload.sh  venc.ko
+# ./load.sh 
+[ 1213.628546] SUCCESS alloc_chrdev_region
+[ 1213.636767] [pmu]domain: 0x40 enable
+```
+
+### 2. sample app运行
+
+运行所有的enc_*.sh,执行编码操作。
+
+也可以执行./run.sh,运行所有测试脚本。
+
+编码输出的H265流文件存放在output目录中。
+
+```bash
+$ cd  venc_driver/
+$ ./enc_1920x1080_8b.sh 
+[VDI] instance pool physaddr=0x4005000, virtaddr=0xffffffff98142000, base=0x4005000, size=4096
+[VDI] map vdb_register core_idx=0, virtaddr=0x3f97f12000, size=65535
+[VDI] allocate_common_memory, physaddr=0xffffffffa0100000, virtaddr=0xffffffff97d12000
+[VDI] vdi_get_common_memory physaddr=0xffffffffa0100000, size=2097152, virtaddr=0xffffffff97d12000
+[VDI] success to init driver 
+FW PATH = monet.bin
+[VDI] instance pool physaddr=0x4005000, virtaddr=0xffffffff97dfc000, base=0x4005000, size=4096
+[VDI] map vdb_register core_idx=0, virtaddr=0x3f97dec000, size=65535
+[VDI] allocate_common_memory, physaddr=0xffffffffa0100000, virtaddr=0xffffffff97bec000
+[VDI] vdi_get_common_memory physaddr=0xffffffffa0100000, size=2097152, virtaddr=0xffffffff97bec000
+[VDI] success to init driver 
+
+VPU INIT Start!!!
+
+get hw version 0 !!!
+VPU coreNum : [0]
+Firmware : CustomerCode: 0000 | version : 0.0.0 rev.196485
+Hardware : 0009
+API      : 5.5.34
+
+[VDI] vdi_allocate_dma_memory, physaddr=0xa0300000, virtaddr=0x3f970ec000~0x3f97bec000, size=11534336
+STREAM_BUF=0xa0300000 STREAM_BUF_SIZE=11534336(0xb00000)
+[VDI] vdi_allocate_dma_memory, physaddr=0xa0020000, virtaddr=0x3f970cc000~0x3f970ec000, size=131072
+* Enc InitialInfo =>
+ instance #0, 
+ minframeBuffercount: 2
+ minSrcBufferCount: 1
+ picWidth: 1920
+ picHeight: 1080
+ [VDI] vdi_allocate_dma_memory, physaddr=0xa0e00000, virtaddr=0x3f96dd4000~0x3f970cb600, size=3110400
+[VDI] vdi_allocate_dma_memory, physaddr=0xa1100000, virtaddr=0x3f96adc000~0x3f96dd3600, size=3110400
+[VDI] vdi_allocate_dma_memory, physaddr=0xa0040000, virtaddr=0x3f96abb000~0x3f96adc000, size=135168
+[VDI] vdi_allocate_dma_memory, physaddr=0xa0080000, virtaddr=0x3f96a98000~0x3f96abb000, size=143360
+[VDI] vdi_allocate_dma_memory, physaddr=0xa00c0000, virtaddr=0x3f96a86000~0x3f96a98000, size=73728
+[VDI] vdi_allocate_dma_memory, physaddr=0xa1400000, virtaddr=0x3f96a45000~0x3f96a86000, size=266240
+Allocated source framebuffers : 1, size : 3110400
+[VDI] vdi_allocate_dma_memory, physaddr=0xa1500000, virtaddr=0x3f9674d000~0x3f96a44600, size=3110400
+output bin file: ./output/inter_8b_11.cfg.265
+Enc Start : Press any key to stop.
+------------------------------------------------------------------------------
+I     NO     T   RECON   RD_PTR    WR_PTR     BYTES  SRCIDX  USEDSRCIDX Cycle 
+------------------------------------------------------------------------------
+00     1     0     0    a0300000  a0319f70    19f70      0         0     5111808
+00     2     1     1    a0300000  a030b867     b867      0         0     5013504
+00     3     1     0    a0300000  a030bbb2     bbb2      0         0     5046272
+00     4     1     1    a0300000  a030ba33     ba33      0         0     5046272
+00     5     1     0    a0300000  a030ba09     ba09      0         0     5046272
+00     6     1     1    a0300000  a030b63d     b63d      0         0     5046272
+00     7     1     0    a0300000  a030ba7c     ba7c      0         0     5046272
+00     8     1     1    a0300000  a030bb5d     bb5d      0         0     5046272
+00     9     1     0    a0300000  a030b736     b736      0         0     5046272
+00    10     1     1    a0300000  a030baa1     baa1      0         0     5046272
+00    10     0    -1    a0300000  a0300000        0     -1        -2           0
+
+inst 0 Enc End. Tot Frame 10
+# ls
+ErrorLog.txt         enc_352x288_10b.sh   run.sh
+cfg                  enc_352x288_8b.sh    stream
+driver               enc_4096x2160_8b.sh  w4_enc_test
+enc_1920x1080_8b.sh  monet.bin            yuv
+enc_256x128.sh       output
+```
+
+### 3. venc.ko卸载
+
+```bash
+$ cd  venc_driver/driver/
+$ ./unload.sh
+```
+
+### 4. 文件导出
+
+可以通过网络scp或者tftp将编码后的文件导出,使用视频播放工具(例如VLC)播放流视频。