DE-fpga验证流程与注意细节
DE-fpga验证流程与注意细节
验证流程 : 作者:DayInAI 日期:20190123
1、制作卡启动固件+烧写bitfile(两张卡)
一张烧卡固件(带测试用例),一张烧bitfile文件
配置DE的config make ARCH=arm64 menuconfig
2、卡固件制作如下:
1)修改下面文件
包括时钟,寄存器,makefile文件,feature文件都需要加上相应的平台。
3、找到fpga开发板(s4或者v7),de验证都是用v7(并且bitfile需要带卡启动固件)
4、spec文档查看:mem对应配置sys_config.fex文件 lichee/tool/pack/chip/sun50iw8p1/configs/fpga/
gic文档对应中断号,dtsi,clk,dts
ccmu对应每个模块的寄存器值,根据ccmu可以查看模块的基地址打印de寄存器的值
5、打印寄存器
cd /sys/class/sunxi_dump/
echo 0x03001000 > dump && cat dump
查看时钟配置
mount -t debugfs none /sys/kernel/debug
cat /sys/class/disp/disp/attr/sys 查看图层信息
cd /sys/kernel/debug/clk 查看时钟的目录
cat clk_summary | grep de 查看相应的de时钟信息 查看tcon_lcd0和pll_video0使能
查看中断号:cat /proc/interrupt
在cedarc-ci代码仓库拉下来放在每个平台的liche目录下面,找到相应的编译工具链并且编译出out目录
fpag验证需要静态编译:CFLAG ="-static" make && CFLAG ="-static" make install
6、测试过程总结:测试之前先问清楚bitfile在那个板子上面验证(s4 or v7),带不带相应的模块比如de,有没有卡启动的brom。
FPGA板子测试需要换下串口,一般是板子里面的一个,固件卡启动也是放在里面,
异常管脚需要写寄存器:cd /sys/class/sunxi_dump
echo 0x0300b06c 0x22222222 > write
echo 0x0300b070 0x22222222 > write
echo 0x0300b074 0x22222222 > write
echo 0x0300b078 0x77772222 > write
(1)测试会写:测试之前先挂载 mount -t debugfs none /sys/kernel/debug
1)先显示一个正常图片:cat pic/ui_800x480_double_151.bin > /dev/fb0
2)抓取会写参数: ./disptest/display_capturescreen.sh 0 xx.bmp 0 (这个有三个参数需要传进去)
#$1: disp id, $2: case file name, $3: capture counter in the same case
第二种测试方法: ./distest/display_layer_alpha.sh auto (加auto参数并新建result文件价目录)
第三种测试方法
./layer/disp_layer_cfg -ch 0 -mem_id 0 -channel_id $chn_index -layer_id 0 -in_fb 0 800 480 0 0 800 480 4 -layer_mode 0 screen_win 0 0 800 480 -alpha 1 255 -zorder 1 -file ./pic/ui_800x480_double_151.bin
./disptest/display_capturescreen.sh 0 $0 $count
(./capture/disp_capture -ch 0 -mem_id 1 -out_fb 0 1280 800 320 200 640 400 -window 320 200 640 400
-file ./cap_64 0x 400_win_crop.bin) 两个脚本一起运行直接截取
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android编程自定义进度条颜色的方法详解
- Android TextView对齐的两种方法
- Android ScrollView实现反弹效果的实例
- Ubuntu 18.04上安装 phpMyAdmin的详细教程
- Android Popupwindow弹出窗口的简单使用方法
- 解决CentOS7虚拟机无法上网并设置CentOS7虚拟机使用静态IP上网
- Android编程实现自定义Dialog的大小自动控制方法示例
- Linux中如何查看文件的创建时间详解
- Android 图片添加水印的实现方法
- Linux系统清除缓存的方法总结
- 详解Android使用@hide的API的方法
- Android 实现按两次返回键退出程序(两种方法)
- 使用 bash 倒计时日期的方法
- Android 实现页面跳转
- Android EditText密码的隐藏和显示功能