Linux C embed development (personal rveiew)

ops/2024/10/18 22:33:43/

1. 如何快速去bring up bcm 的wifi chipset
   a. 首先的确认 编译的BSP profile 
   b. 其次要先用 default 的kernel config 去编译
   c. 现在我们的一些 PCIE/GPIO/driver 总线的设置 都在dts 中,有错就去改dts
2. BCM 的板子bring up 注意事项
    a.  fw: bcm963146GW_WL23D2D1GA_WLMLO_nand_squashfs_update.pkgtb 
           这里从fw 名字中包含几种 信息(profile,flash 类型(nand,emmc)文件系统(ubi,squashfs)flashblock size(128、256),带不带bootloader(loader))
        .pkgtb 结尾的文件可以通过 bootloader cli ,webgui 的http 去升级
         .bin 结尾的可以用作烧录机器烧录(但一定要注意, 这个bin 有两种,1. 是文件名中带raw 的 1. 名字中没有raw包含bootstrap)  带raw的是不带ecc 的可以用作bootloader tftp 升级. 带bootstrap 的是用作烧录的带ecc.  
           这里注意 烧录和tftp 千万不要升错了bin file
     b.  启动时的boardid 千万不要选错 boardid=968560REF_PCI2 
        如何查看支持那些board id 可以在bootloader cli 中setenv  boardid  xx 来查看
      c. 这些信息可以给板子借一个console 来查看他的 星系
          U-Boot TPL 2019.07 (May 19 2024 - 00:53:56 -0700)
          U-Boot TPL 2019.07 (May 19 2024 - 00:53:56 -0700)
`Board is non secure`
`$TPL: 50404p3@499373 $`
`PMC driver initcall`
`BCM UBUS4 driver [ubus_sys] registered`
`BCM UBUS4 DCM clk driver [ubus_dcm_sys] registered`
`CPU Clock: 1500MHz`
`IMAGE is NAND`
`Trying to boot from NAND`
`nand flash device id 0xc2da9095, total size 256MB`
`block size 128KB, page size 2048 bytes, spare area 64 bytes required`
`ECC BCH-4`
`INFO: image from 2097152 to 2673868`

     3. BRCM EVM board 如何升级sc 的fw
          首先 想用 brcm bootloader + sc 上层的方式是 不容易实现的 (flash map 不同) 要想这样做一定要确定 brcm 的flash map 和sc 相同 并且 所用的ubi 的volume id 一定要相同
          1. 通过tftp 吧整个image 更行 bootloader 和上层都是sercomm 的
          2. 烧录 flash. 

bcm wifi 启动:
  1. 首先 NONE csm fw 编译(加上_BASESHELL) 即使none cms
     /release/maketargets  96856GWO_WL23D2D1GA_WLMLO_BASESHELL 
    在这个项目中会遇到none cms viop 便不过,就直接自己解决brcm 说是宏报的不好
 2. 编译MT DT test wifi driver (WLTEST=1 enable test driver)
     make PROFILE=96856GWO_WL23D2D1GA_WLMLO_BASESHELL WLTEST=1 
      wl -i wl0 ver 查看,入宫ver 中带有test 字样就是test driver
 3. test wifi driver bin
      DHD: /dhd/mfg/  现编时 test fw
      普通 在/lib/modules/extra /wl_mfgtest.ko
 4. enable test fw 
     在bootloader cli 下  setenv wlFeature 0x2   // test 
                      setenv wlFeature 0x0  //normal 
 5. application
     wlssk->ufnvram->hostapd
     wlssk-service.c
      wlconfig: wifi config
      ceventd/cevent  时wifi 调试app和debug
      
 6. DHD enable
    bootargs_append=cma=56M  48M for 63146
     dhd0=11
     dhd1=11
7. EVM board 可能 升级MCB 出错。 
      shmoo completed OK
find magic number 0x64503301 at address 0x26000
reading blob from 0x26000 offset 0xc len 20492
digest sha256 OK

DPFE FW hpk3_16_ddr3 3.53.0.0 20210506 SEGMENT 2/4
FFF000F8 00000000 0090703D
DDR3
MCB rev=0x00020A01 Ref ID=0x0703D Sub Bld=0x009 Cookie=0x9E5C163A
Dram Timing 11-11-11
CMD @1T
Virt VTT on


Shmoo WL

One UI Steps : 0x76

   0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111
   0000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999000000000011111111
   0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567
00 X+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
01 X+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

shmoo completed with error
run shmoo error
MEMSYS init failed, return code 00000010
DPFE errors: 0x0 0x400000 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
MHS errors: 0x10000 0x0
DDR scrambling enabled
### ERROR ### Please RESET the board ###

     ddr 4 
      ddr 0x40101615
     
  2. 改bootloader 的code
      
 3. Bootloader 能烧录的bin 要用par 文件来做,loader_xx.bin 不能用
 4. 如果启动后 mtd 区域数据丢失或者 不可写, 要看启动过程中 有没有人去写gpio 的值。

5. 读懂一个工程最快的步骤
     a. 要介绍文档
     b. 下载工程
     c.  看下下来的 源码 找readme 来看
     d.  在下载的 源码中找介绍文档读
  6. UIBI fs (var/ft)无法mount 上
     a. 首先要检查 给的flash 的大小,ubi 最小3M,但是最好要是两倍
     b. 我们遇到 inviald arguments 时 一般 都是 分区flash map 给的太小了
     
     用ubinfo -a 看 没有可用空间
   

2.如何判断一个bootloader 能否在另一个hw 上能不能起来
    a. 首先 他们的住chip的型号要相近 (也即bootcli 中的boardid 有支持列表)
    b. 他们的 flash、ram 都要能支持 (特别是 flash 他的blcok size 支持 DCH 4 还是8 ) 
    c. 是否有security boot 
     d. 如何判断 bootloader 能否带起rootfs
         1. flash map 是否相同
         2. 是否有签名校验(校验rootfs 不是ram 的整个ubi)
         3. ubi的volume name 是否和 bootloader 中的一样。(不一样找不到volum)
3.我们想要在 EVM board 上去跑sc fw 最快的方法
1. 如果 EVM board 的flash (block size,BCH 等都要看)和 ram 都是和 我们的hw 一样,直接 在bcm 的bootloader cli 先tftp 升级(tftp VD4277B_evm_boot.bin  
    nand erase.chip   
    nand write 0x1000000 0 $filesize)  我们VD4277B sc hw 和evm board 不同

     2. EVM board 和sc board hw 不同 (flash 和ram)

         这时最快的方法是 让driver team 给以个bootloader 和sc 相同的flash map, 我们在升级 sc 的上层。
4.Broadcom wifi 如何 编译 WLTEST fw(wlFeature=0x2)
      首先 说明一点 如果是 dongle fw 编译的的时候 在 dongle image 下有两个录 一个 formfw 的 一个mfg 的目录就是 mfg test fw。
      如果不是dongle fw, 则有连个ko for wl test (wl_mfgtest.ko  hnd_mfgtest.ko), 这两个 ko 在sdk 中有的有 prebuild 的ko 有的没有就需要自己去编一个test ko。 
          build command: make clean; make PROFILE=<profile>_WLMFGTEST    (在profile 加个后缀 _WLMFGTEST)
          编出来后 的wl.ko   和 hnd.ko 就是 test image, 你再在编译test image 时更名成wl_mfgtest.ko  hnd_mfgtest.ko 然后copy 到你的rootfs中,然后去编。 
5. wl test fw 编译方法: 
     make PROFILE=<profile>  WLTEST=1  // 这种编译方法只是 在编译的时候安装 mfg image ,不是 rebuild mfg test ko, 注意注意。 
      WLTEST=1 和 bsp config file 中 BUILD_HND_MFG=y  都不是在编译wl_mfgtest.ko 和 hnd_mfgtest.ko, 他只是去编译一个test image, 包括hw test 时用到的default 值不同等。


  6.  Remove  mfg test kernel module in formal release for flash size limtation. 
              in bsp config file set BUILD_BCM_WLAN_NO_MFGBIN=y
 7. when you met the aclocal-1.14 command not found  for compiler packets
       enter the directory && autoreconf -ivf 
 


http://www.ppmy.cn/ops/56616.html

相关文章

全开源TikTok跨境商城源码/TikTok内嵌商城+搭建教程/前端uniapp+后端

多语言跨境电商外贸商城 TikTok内嵌商城&#xff0c;商家入驻一键铺货一键提货 全开源完美运营 海外版抖音TikTok商城系统源码&#xff0c;TikToK内嵌商城&#xff0c;跨境商城系统源码 接在tiktok里面的商城。tiktok内嵌&#xff0c;也可单独分开出来当独立站运营 二十一种…

数据建设实践之大数据平台(五)

安装hive 上传安装包到/opt/software目录并解压 [bigdatanode101 software]$ tar -zxvf hive-3.1.3-with-spark-3.3.1.tar.gz -C /opt/services [bigdatanode101 services]$ mv apache-hive-3.1.3-bin apache-hive-3.1.3 配置环境变量 export JAVA_HOME/opt/services/jd…

嵌入式单片机项目开发的基本思想分享

有小伙伴说:我一个很简单的单片机项目,就点个灯,一个AD采集并通过串口传输一下数据,这还需要分层设计吗? 这个问题,其实没有标准答案,你可以不用分层设计,也可以分层设计,这取决于你,或你们公司对软件的要求。 当然,作为工作十年有余的过来人,我的建议:能采用分…

HTML集成优雅的实时输入清除功能

引言 你好呀&#xff0c;我是小邹。 点击访问 我的个人博客 在现代网页设计中&#xff0c;用户体验是至关重要的。一个流畅、直观且反应迅速的界面能够显著提升用户满意度。本文将介绍如何在网页表单中集成实时输入清除功能&#xff0c;即在输入框中显示一个“x”图标&#…

【错题集-编程题】买卖股票的最好时机(四)(动态规划)

力扣对应题目链接&#xff1a;188. 买卖股票的最佳时机 IV - 力扣&#xff08;LeetCode&#xff09; 牛客对应题目链接&#xff1a;买卖股票的最好时机(四)_牛客题霸_牛客网 (nowcoder.com) 一、分析题目 1、状态表示 为了更加清晰的区分买入和卖出&#xff0c;我们换成有股…

跨境电商自养号测评干货分享:从环境搭建到安全养号

跨境电商测评&#xff08;补单&#xff09; 测评补单这个词对于大部分跨境卖家来说都很熟悉&#xff0c;因为补单对于卖家来说算是一种低成本&#xff0c;高回报的推广营销方式&#xff0c;对于商品流量&#xff0c;转化率&#xff0c;关键词质量分&#xff0c;链接权重都起到…

Zookeeper-数据结构

ZooKeeper 的数据模型具有类似于文件系统树结构的特点&#xff0c;但它是专门为分布式应用设计的。 以下是 ZooKeeper 数据结构的主要特点&#xff1a; 层次化的命名空间&#xff1a;ZooKeeper 提供了一个层次化的命名空间&#xff0c;类似于文件系统。每个节点在层次结构中有…

未来互联网的新篇章:深度解析Web3技术

随着技术的不断演进&#xff0c;Web3正逐渐成为引领未来互联网发展的关键驱动力。本文将深入探讨Web3技术的核心概念、关键特征以及其对未来互联网生态的深远影响&#xff0c;旨在帮助读者全面理解和把握这一新兴技术的发展方向和潜力。 1. Web3的基本概念和演进 Web3并非简单…