gitee

1、

建议使用 ubuntu18.04.5

编译环境:
sudo apt update
sudo apt install libglib2.0-dev libpixman-1-dev
sudo apt install patchutils python screen texinfo unzip zlib1g-dev device-tree-compiler

sudo apt-get install autoconf automake autotools-dev bc bison
sudo apt install libmpc-dev libmpfr-dev libncurses-dev libssl-dev libtool
sudo apt install build-essential curl flex gawk gdisk git gperf libgmp-dev

2、

1、Ubuntu安装tftp共享路径
参考csdn:ubuntu18.04安装tftpd服务器_飞翔的荷兰人号z的博客-CSDN博客_tftpd ubuntu
sudo apt-get install tftpd-hpa
sudo vim /etc/default/tftpd -hpa
TFTP_USERNAME="tftp"
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/xxx/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"
mkdir /home/xxx/tftpboot
sudo chmod 777 /home/xxx/tftpboot
sudo service tftpd-hpa restart
mini6410 # tftp c0008000 1.txt
2、uboot添加cmd启动

一、打开preboot 功能
main.c
void main_loop(void)
{
const char s;
bootstage_mark_name(BOOTSTAGE_ID_MAIN_LOOP, "main_loop");
if (IS_ENABLED(CONFIG_VERSION_VARIABLE))
env_set("ver", version_string); /
 set version variable */

     //if (IS_ENABLED(CONFIG_USE_PREBOOT))             //  打开PREBOOT 命令
            run_preboot_environment_command();

二、添加preboot功能
\HiFive_U-Boot\include\configs\starfive-vic7100.h
#define CONFIG_PREBOOT
"setenv fdt_addr fdtcontroladdr;""fdtaddrfdtcontroladdr;""fdtaddr{fdtcontroladdr};"
"qwer;"
三、添加cmd命令
HiFive_U-Boot\cmd\riscv\tftpcmd.c

static int do_qwer(struct cmd_tbl *cmdtp, int flag, int argc,
char *const argv[])
{
char *s;

#if 0
s = env_get("tftprun");
printf("lqw do_tftprunimg cmd:%s\n",s);
if (s)
run_command_list(s, -1, 0);

#else
run_command_list("tftpboot a0000000 192.168.120.145:image.fit; bootm start a0000000;bootm loados a0000000;booti 0x80200000 0x86100000:${filesize} 0x86000000\n", -1, 0);
#endif
return 0;
}

static char qwer_help_text[] =
"- display SBI spec version, implementation, and available extensions";

U_BOOT_CMD_COMPLETE(
qwer, 1, 0, do_qwer,
"boot kernel from qwer",
qwer_help_text, NULL
);

提交链接:
https://gitee.com/shallow-night/sft-riscv/commit/da06d5c05a9ea8bfb22d2be3c18c4819627f514c

3、

一、添加环境变量的值
HiFive_U-Boot\include\configs\starfive-vic7100.h
#define CONFIG_TFTPRUN "tftpboot a0000000 192.168.120.5:image.fit; bootm start a0000000;bootm loados a0000000;booti 0x80200000 0x86100000:${filesize} 0x86000000\n"

二、获取环境变量
sft-riscv\HiFive_U-Boot\include\env_default.h
#ifdef CONFIG_TFTPRUN
"tftprun=" __stringify(CONFIG_TFTPRUN) "\0"
#endif
三、解决编译报错
HiFive_U-Boot\Makefile
# quiet_cmd_cfgcheck = CFGCHK 2 
# cmd_cfgcheck =2 # cmd_cfgcheck =(srctree)/scripts/check-config.sh 2  
#2  #(srctree)/scripts/config_whitelist.txt $(srctree)
四、使用变量
s = env_get("tftprun");
printf("lqw do_tftprunimg cmd:%s\n",s);
if (s)
run_command_list(s, -1, 0);

4

查看git 仓库
git remote show origin

git 免登陆
git---全局设置用户名、密码、邮箱_qq_34802511的博客-CSDN博客_git设置用户名和密码
Git Pull 避免用户名和密码方法 - 王信平 - 博客园

git config --global credential.helper store
git config --list
git config --global user.name "david.li"
git config --global user.email "david.li@starfivetech.com"
git config --global user.password "zaq1XSW@"

sudo apt-get install wine64
wine --version

wine uninstaller
winecfg
add source code z:/

5、

make -C work/buildroot_initramfs/ O=work/buildroot_initramfs v4l2_test-dirclean;make -C work/buildroot_initramfs/ O=work/buildroot_initramfs v4l2_test-rebuild;cp work/buildroot_initramfs/build/v4l2_test/v4l2test ~/tftp/

make -C work/buildroot_initramfs/ O=work/buildroot_initramfs host-stfisp_setfilet-dirclean
make -C work/buildroot_initramfs O=work/buildroot_initramfs host-stfisp_setfile-dirclean
make -C work/buildroot_initramfs O=work/buildroot_initramfs host-stfisp_setfile-rebuild

make -C work/buildroot_initramfs O=work/buildroot_initramfs v4lutils-dirclean
make -C work/buildroot_initramfs O=work/buildroot_initramfs v4lutils-rebuild

make -C work/buildroot_initramfs O=work/buildroot_initramfs libv4l-dirclean
make -C work/buildroot_initramfs O=work/buildroot_initramfs libv4l-rebuild

make -C work/buildroot_initramfs O=work/buildroot_initramfs v4l2_test-dirclean
make -C work/buildroot_initramfs O=work/buildroot_initramfs v4l2_test-rebuild

hexdump是跟文件系统的可执行命令,可通过该命令抓取内存数据
内核open该功能:
make linux-menuconfig
/devmem
[*] /dev/mem virtual device support

2、修改dts:
+++ b/arch/riscv/dts/jh7100-beaglev-starlight.dts
@@ -66,11 +66,11 @@
reg = <0x0 0xd0000000 0x0 0x28000000>;
};

  •           vin_reserved: framebuffer@f9000000 {
    
  •                   compatible = "shared-dma-pool";
    
  •                   no-map;
    
  •                   reg = <0x0 0xf9000000 0x0 0x1000000>;
    
  •           };
    
  •   //      vin_reserved: framebuffer@f9000000 {
    
  •   //              compatible = "shared-dma-pool";
    
  •   //              no-map;
    
  •   //              reg = <0x0 0xf9000000 0x0 0x1000000>;
    
  •   //      };
    
              sffb_reserved: framebuffer@fb000000 {
                      compatible = "shared-dma-pool";
    

+++ b/arch/riscv/dts/jh7100.dtsi
@@ -562,7 +562,7 @@
reg-names = "mipi0", "vclk", "vrst", "mipi1", "sctrl",
"isp0", "isp1", "tclk", "trst", "iopad";
interrupts = <119 109 112>;

  •                   memory-region = <&vin_reserved>;
    
  •           //      memory-region = <&vin_reserved>;
    
                      clocks =  <&clkgen JH7100_CLK_VIN_SRC>,
                               <&clkgen JH7100_CLK_ISP0_AXI>,
    

3、修改kernel
确保kernel没有使用vin_reserved 节点《通过shared-dma-pool判断》

4、抓数据

hexdump -v -s 0xf9000000 -n 4147200 /dev/mem > sc6.raw
    ssh-keygen -f "/home/w/.ssh/known_hosts" -R "192.168.120.14"
scp root@192.168.120.14:/root/sc6.raw .

5、修改数据
原来格式: ec000000 1b1b 1d1c 1b1c 1c1e 1d1c 1e1d 1d1d 1d1c
ec000010 1e1c 1d1d 1c1d 1e1d 2020 1e1e 201f 1e20
...
修改后格式: 00000000: 1b1b 1d1c 1b1c 1c1e 1d1c 1e1d 1d1d 1d1c
00000010: 1e1c 1d1d 1c1d 1e1d 2020 1e1e 201f 1e20
...
删除列
1.光标定位到要操作的地方。
2.CTRL+v 进入“可视 块”模式,选取这一列操作多少行。
3.d 删除。

插入列
	插入操作的话知识稍有区别。例如我们在每一行前都插入"() ":
	1.光标定位到要操作的地方。
	2.CTRL+v 进入“可视 块”模式,选取这一列操作多少行。
	3.SHIFT+i(I) 输入要插入的内容。
	4.ESC 按两次,会在每行的选定的区域出现插入的内容。
shift + g 是到最后一行
 :1    到第一行

6、转换格式
xxd -r sc.raw rsc.raw

framebuffer 修改:

Uboot
+++ b/arch/riscv/dts/starfive_vic7100_evb.dts

+// sffb_reserved: framebuffer@fb000000 {

  •   //              compatible = "shared-dma-pool";
    
  •           //      no-map;
    
  •                   //reg = <0x0 0xfb000000 0x0 0x2000000>;
    
  •           //};
    
  •                   //memory-region = <&sffb_reserved>;
    

kernel
@@ -641,6 +641,7 @@ static int sf_fb_map_video_memory(struct sf_fb_data *sf_dev)
struct resource res_mem;
struct device_node *node;

+#if 0
node = of_parse_phandle(sf_dev->dev->of_node, "memory-region", 0);
if(node) {
of_address_to_resource(node, 0, &res_mem);
@@ -652,6 +653,11 @@ static int sf_fb_map_video_memory(struct sf_fb_data *sf_dev)
}

    sf_dev->fb.screen_base = devm_ioremap_resource(sf_dev->dev, &res_mem);

+#else

  • sf_dev->fb.screen_base = (unsigned long)ioremap(0xfb000000,0x2000000);
  • sf_dev->fb.fix.smem_start = 0xfb000000;
  • sf_dev->fb.screen_size = 0x2000000;
    +#endif
    memset(sf_dev->fb.screen_base, 0, sf_dev->fb.screen_size);
hexdump -v -s 0xfb000000 -n 4147200 /dev/mem > fb.raw
    ssh-keygen -f "/home/w/.ssh/known_hosts" -R "192.168.120.14"
scp root@192.168.120.14:/root/fb.raw .

xxd -r fb.raw fbfb.raw

vout
hexdump -v -s 0xfb000000 -n 4147200 /dev/mem > fb.raw
ifconfig eth0 192.168.120.14;
ssh-keygen -f "/home/w/.ssh/known_hosts" -R "192.168.120.14"
scp root@192.168.120.14:/root/fb.raw .
xxd -r fb.raw fbfb.raw

7、地址:ftp://58.34.33.2:4000
用户名:thundersoft
密码:zcJPinf#8f

8、1、打开宏控制
CONFIG_FRAMEBUFFER_CONSOLE

9、

查看sensor 支持的分辨率 imx219

v4l2-ctl -d /dev/video1 --list-formats

v4l2-ctl -d /dev/video1 --list-framesizes NV12

v4l2-ctl -d /dev/v4l-subdev12 --list-subdev-framesizes pad=0,code=0x300f
v4l2-ctl -d /dev/video1 --list-frameintervals width=1920,height=1080,pixelformat=NV12
v4l2-ctl -d /dev/v4l-subdev12 -c exposure=1600

查看pipeline
v4l2-ctl -d /dev/v4l-subdev12 -D
media-ctl -p

设置sensor的属性
v4l2-ctl -d /dev/v4l-subdev12 -c exposure=300 -L
v4l2-ctl -d /dev/v4l-subdev12 -L

查看所有测试项目
v4l2-compliance
v4l2-compliance -d /dev/video1;
v4l2-ctl -d /dev/v4l-subdev12 -c test_pattern=2
v4l2-ctl -d /dev/v4l-subdev12 -c red_pixel_value=0

1 检查video/media dev 和subdev 的ioctl CMD功能测试和支持情况。
v4l2-compliance -d /dev/v4l-subdev0
2 查看video dev 和subdev 的user controls功能支持情况
v4l2-ctl –d /dev/v4l-subdev10 --list-ctrls-menus
v4l2-ctl -d /dev/v4l-subdev10 --list-ctrls-menus

3 设置ctrl参数
v4l2-ctl -d /dev/v4l-subdev10 --set-ctrl=vertical_flip=1
v4l2-ctl -d /dev/v4l-subdev10 --get-ctrl=vertical_flip
v4l2-ctl -d /dev/v4l-subdev10 --get-ctrl=power_line_frequency
v4l2-ctl -d /dev/v4l-subdev10 --get-ctrl=horizontal_flip

4 media-ctl
media-ctl --help 查看详细说明
media-ctl --help

5、

1_dump isp raw data

1、查看 stf_isp0 所在的subdev
cmd: media-ctl -p
- entity 97: ov4689 2-0036 (1 pad, 1 link)
type V4L2 subdev subtype Sensor flags 0
device node name /dev/v4l-subdev12
pad0: Source
[fmt:SBGGR10_1X10/1920x1080@1/30 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:full-range]
-> "stf_csiphy1":0 [ENABLED,IMMUTABLE]

    - entity 127: ov4689 0-0036 (1 pad, 1 link)
                  type V4L2 subdev subtype Sensor flags 0
                  device node name /dev/v4l-subdev13
            pad0: Source
                    [fmt:SBGGR10_1X10/1920x1080@1/30 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:full-range]
                    -> "stf_csiphy0":0 [ENABLED,IMMUTABLE]

2、加载isp配置文件
v4l2test -d /dev/v4l-subdev5 -l stf_isp0_fw_dump.bin
v4l2test -d /dev/v4l-subdev6 -l stf_isp0_fw_dump.bin

3、建立pipeline
pipeline_setting.sh csiphy0 ISP0RAW start
pipeline_setting.sh csiphy1 ISP1RAW start
4、开始传输
v4l2test -d /dev/video3 -f 10 -c
scp root@192.168.120.14:/root/raw-59-BGGR16.raw
ov4689 10 V4L2_PIX_FMT_SBGGR12 ok

9、sprd_host->pinctrl = devm_pinctrl_get(&pdev->dev);
sprd_host->pins_uhs = pinctrl_lookup_state(sprd_host->pinctrl, "state_uhs");
pinctrl_select_state(host->pinctrl, host->pins_uhs);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值