zoukankan      html  css  js  c++  java
  • 333开发记录

    1、查看sensor 输入状态

      # cat sys/class/mstar/vif0/vif_info

    2、查看开机信息

      # dmesg

    3、配置系统功能

      # make config

    4、sdk -> main

      ..sdkverifyCardvimplcardvsrc

    5、sdk -> cgi

      ..sdkverifyCardvimpl etcgi_1.0.0

    6、boot,kernel,project 配置

      # make menuconfig

    7、执行程序 # ./xxconf 提示 “./xxconf: Permission denied” 或 “./xxconf: ./xxconf: cannot execute binary file” 可能是权限问题

      修改执行程序权限 #sudo chmod 777 xxconf

    8、project 配置sensor 导致编译出错无法找到原因,重新解压project 后不修改编译无法通过,提示

      ...  libprotobuf-lite.so': No such file
      ...  libcrypto.so': No such file
      ...  libssl.so': No such file

      解决方法:在project 目录下 find -name "libprotobuf-lite.so" 找到 No such file 的三个文件并删除,再次编译通过。

     9、Kernal menuconfig 里打开 GSensor sc7a20,以模块方式编译,报错。提示input_set_abs_params, input_event, input_register_device...等函数找不到,而linux/input.h 已添加。

      原因:没有把input 子系统加入kernel。

      解决方法:添加input 子系统

      可以不用模块方式添加,嵌入方式也可以,省去添加模块步骤;

    10、Kernal menuconfig 里打开 GSensor sc7a20,以模块方式编译通过,将sc7a20.ko 开机运行,提示找不到设备树节点poll_interval,min_interval,g_range...等变量找不到。

      在kernelarcharmootdts 下的对应设备树节点添加

                sc7a20@19 {
                    compatible = "silan,sc7a20_acc";
                    reg = <0x19>;
                    poll_interval = <1000>;
                    min_interval = <500>;
                    g_range = <0>;
                    axis_map_x = <0>;
                    axis_map_y = <1>;
                    axis_map_z = <2>;
                    negate_x = <1>;
                    negate_y = <1>;
                    negate_z = <1>;
                };

     11、新SDK 编译通过,升级成功,再上电开机提示 Verifying Checksum ... Bad Data CRC         ERROR: can't get kernel image!    然后卡死。

      分析是准备加载内核时校验出错。1、可能是存储有坏块(升回旧软件正常,排除);2、编译合成问题,不大可能,就剩下是配置问题(因为拿到新SDK编译有问题,原厂另外再提供过配置文件),对比新旧SDK配置文件发现新SDK FLASH SIZE = 8M,

      而实际使用16M,也与旧SDK相同,改为16M 后升级再开机正常; 

    12、查找目录下所有文件包涵的字符串  

      # grep -rn "需要查找的字符串"

    13、调试GSensor 流程

      1、驱动问题:修改驱动(kernel) -> 编译kernel -> 返回到project 目录拷贝gsensro.ko 到交叉目标系统目录 #cp -f ./kbuild/4.9.84/modules/gsensor.ko ./release/cardv/i6b0/common/uclibc/4.9.4/modules/4.9.84/  -> 编译交叉目标系统并生成 image -> 升级更新;

      2、应用问题:修改应用(sdk) -> 编译sdk (目录 ./sdk/verify/Cardvimpl/cardv) -> 将新就用更新到 project  #make install -> 编译交叉目标系统并生成 image -> 升级更新;

    14、使GSensor 模块开机自动安装运行

      在文件 projectimageconfigsi6b0 ootfs_cardv.mk  添加 

      cp -rf $(LIB_DIR_PATH)/modules/$(KERNEL_VERSION)/$(GSENSOR_MODULE) $(BOOT_CONFIG)/modules/$(KERNEL_VERSION);
      echo insmod /bootconfig/modules/$(KERNEL_VERSION)/$(GSENSOR_MODULE) >> $(BOOT_CONFIG)/demo.sh;

      注意添加位置,否则会导致GSensor 无法正常工作。

    15、换新电脑重新搭建开发环境,同样的SDK 执行 # ./setup_config 报错 sh: Bad substitution

      原因:两种shell语言解释器 bash和dash

      查看当前/bin/sh 指向哪种解释器:  

      # ls /bin/sh -al

      lrwxrwxrwx 1 root root 4 Mar 26 2018 /bin/sh -> dash

      修改bin/sh指向为bash:

      # sudo ln -fs /bin/bash /bin/sh

      或者运行 # sudo dpkg-reconfigure dash 后选择NO

      参考:shell字符串截取报错:Bad substitution的解决

    16、新SDK0308 编译通过后,升级开机 wifi 无法生成SSID,log提示“Read-only file system”

       修改 ./project/image/configs/i6b0 -> nor.squashfs.partition.cardv.config  

    FLASH_SIZE==16M

     

     FLASH_SIZE==8M

     

     猜测可能是存储空间不够导致。

    17、参考开发文档在uboot 控制gpio,实测开发文档提供api 无法控制gpio,但可以终端命令控制GPIO。

      找到命令控制GPIO ,查看最终使用api,使用该api 控制GPIO

    /* Power Enable */
    MDrv_GPIO_Pad_Set(PAD_POWER_EN);
    mdrv_gpio_set_high(PAD_POWER_EN);

    放在 void main_loop(void) 前无效,所以相关GPIO 初始化放在 void main_loop(void) 里;

    18、更新IQ

    更新IQ文件,只需修改CONFIG_IQ_API="gc2053/gc2053_day_api.bin"部分。
    CONFIG_IQ0 到CONFIG_IQ3 默认使用"imx307/imx307_iqfile.bin"。

    平常录像要关掉 IQ_Adjust,IQ_Adjust只会调试IQ时用到。

    19、调试IQ: https://files.cnblogs.com/files/LittleTiger/IQ%E8%B0%83%E8%AF%95%E9%85%8D%E7%BD%AE.zip

     20、uboot 烧录固件后不重启,直接从内核启动。这样处理是为了解决打开自动升级功能 uboot 烧录固件后重启,重启烧录。

     修改 ./project/board/usb_upgrade_scripts/nor_script 目录下的 set_config 文档,

    将命令

      # reset

    改为

      # sf probe 0
      # sf read 0x22000000 ${sf_kernel_start} ${sf_kernel_size}
      # bootm 0x22000000

     (去掉 #)

     

    遇到问题并解决问题是最有效的学习方式,当然过程也是最痛苦的。不要问我明天去哪里,去干嘛,我只想说:我现在在解问题!

  • 相关阅读:
    CentOS7 虚拟机搭建、初始设置、简单使用
    Oozie-4.0.0-cdh5.3.6搭建
    ionic开发环境搭建
    nodejs+chromium 创建桌面应用程序
    常用mysql笔记
    javascript 操作 css Rule
    javascript正则表达式笔记
    grunt之dev-pro环境切换
    grunt之入门实践
    动态加载js
  • 原文地址:https://www.cnblogs.com/LittleTiger/p/14479007.html
Copyright © 2011-2022 走看看