Linux C embed development (personal rveiew)

news2024/11/16 23:32:58

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.coloradmin.cn/o/1919541.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络基础:Vlan原理与配置

VLAN&#xff08;Virtual Local Area Network&#xff0c;虚拟局域网&#xff09;是一种将一个物理网络划分为多个逻辑子网的技术。它通过在网络交换机上配置&#xff0c;使得不同VLAN中的设备即使连接在同一个物理交换机上&#xff0c;也不能直接进行通信&#xff0c;从而实现…

无头单向非循环链表实现 and leetcode刷题

无头单向非循环链表实现 1. 单链表的模拟实现IList.java接口&#xff1a;MySingleList.java文件&#xff1a; 2. leetcode刷题2.1 获取链表的中间节点2.2 删除链表中所有值为value的元素2.3 单链表的逆置2.4 获取链表倒数第k个节点2.5 给定 x, 把一个链表整理成前半部分小于 x,…

Docker存储目录问题,如何修改Docker默认存储位置?(Docker存储路径、Docker存储空间)etc/docker/daemon.json

文章目录 如何更改docker默认存储路径&#xff1f;版本1&#xff08;没测试&#xff09;版本2&#xff08;可行&#xff09;1. 停止 Docker 服务&#xff1a;2. 创建新的存储目录&#xff1a;3. 修改 Docker 配置文件&#xff1a;4. 移动现有的 Docker 数据&#xff1a;5. 重新…

盲人出行体验攻略:蝙蝠避障,点亮前行的明灯

在繁华喧嚣的都市中&#xff0c;每一步都充满了未知与挑战&#xff0c;而对于盲人朋友们来说&#xff0c;出行更是一场无声的冒险。他们凭借着内心的勇气和坚韧的意志&#xff0c;在黑暗中摸索前行&#xff0c;每一步都承载着对生活的热爱与追求。今天&#xff0c;我们要深入探…

YOLOv8改进 | 注意力机制| 利用并行子网络构建深度较浅但性能卓越的网络【全网独家】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

jdevelope安装

准备 1.jdk1.8&#xff08;已经安装不做记录&#xff09; 2.下载jdevelope安装包 3.安装包安装jdevelope开发工具 4.创建或导入项目 下载jdevelope安装包 官网下载地址&#xff1a;https://edelivery.oracle.com 安装包安装jdevelope开发工具 cmd管理员权限运行安装脚本…

新质生产力赛道核心解读,机械制造何以“向智向新”

机械行业&#xff0c;国民经济的坚实基石与核心驱动力&#xff0c;为各行各业提供高效生产工具。立于产业链的中游&#xff0c;向上游紧密连接着高精尖的核心零部件制造商与基础原材料供应商&#xff1b;向下游&#xff0c;则广泛渗透并深刻影响着基础设施建设、交通运输&#…

7.11日学习打卡----初学Redis(六)

7.11日学习打卡 目录&#xff1a; 7.11日学习打卡一. redis事务事务的概念与ACID特性Redis事务三大特性Redis事务执行的三个阶段Redis事务基本操作 二. redis集群主从复制主从复制环境搭建主从复制原理剖析 哨兵监控哨兵监控环境搭建哨兵工作原理剖析 故障转移Cluster模式Clust…

如何用脉购CRM健康档案管理系统显著提升用户粘性与忠诚度

如何用脉购CRM健康档案管理系统显著提升用户粘性与忠诚度 脉购CRM健康档案管理系统以其创新的健康管理理念和先进的技术手段&#xff0c;为医疗机构和用户之间建立了一座高效的沟通桥梁。通过该系统&#xff0c;用户的健康档案得到了全面而细致的管理&#xff0c;不仅提高了医…

Node多版本管理器NVM安装使用

背景 有的时候开发前端项目需要用到不同版本的nodejs环境&#xff0c;此时就是需要有一个版本管理工具可以灵活的切换node版本&#xff0c;方便维护不同的开发环境 node版本管理工具 nvm工具介绍 安装node很方便&#xff0c;只需要一条命令可以轻松切换node版本可以多版本n…

MyBatis框架学习笔记(三):MyBatis重要文件详解:配置文件与映射文件

1 mybatis-config.xml-配置文件详解 1.1 说明 &#xff08;1&#xff09;mybatis 的核心配置文件(mybatis-config.xml)&#xff0c;比如配置 jdbc 连接信息&#xff0c;注册 mapper 等等都是在这个文件中进行配置,我们需要对这个配置文件有详细的了解 &#xff08;2&#x…

4.感知机

感知机 ​ 给定输入 x x x&#xff0c;权重 w w w&#xff0c;和偏移 b b b,感知机输出&#xff1a; KaTeX parse error: Unknown column alignment: o at position 16: \begin{array} o̲ \sigma(<w,x>… 或者是二分类&#xff1a;-1或1 Expected node of symbol gro…

全网最适合入门的面向对象编程教程:14 类和对象的 Python 实现-类的静态方法和类方法,你分得清吗?

全网最适合入门的面向对象编程教程&#xff1a;14 类和对象的 Python 实现-类的静态方法和类方法&#xff0c;你分得清吗&#xff1f; 摘要&#xff1a; 本文主要介绍了Python中类和对象中的类方法和静态方法&#xff0c;以及类方法和静态方法的定义、特点、应用场景和使用方…

机器学习(五) -- 监督学习(7) --SVM2

系列文章目录及链接 上篇&#xff1a;机器学习&#xff08;五&#xff09; -- 监督学习&#xff08;7&#xff09; --SVM1 下篇&#xff1a; 前言 tips&#xff1a;标题前有“***”的内容为补充内容&#xff0c;是给好奇心重的宝宝看的&#xff0c;可自行跳过。文章内容被“文…

Spring支持人工智能应用框架-SpringAi

简介 人工智能技术和日益成熟&#xff0c;开发企业级人工智能的应用已成为一个热门的趋势。Spring AI 是一个用于 AI 工程的应用框架&#xff0c;目的是为了简化AI应用的对接、部署、维护和扩展。 SpringAi的灵感来自LangChain和LlamaIndex&#xff0c;但是SpringAi并不是直接…

RK3568平台(显示篇)主屏副屏配置

一.主屏副屏配置 目前在RK3568平台上有两路HDMIOUT输出&#xff0c;分别输出到两个屏幕上&#xff0c;一路配置为主屏&#xff0c;一路配置为副屏。 硬件原理图&#xff1a; &hdmi0_in_vp2 {status "okay"; };&hdmi1_in_vp0 {status "okay"; }…

断电的固态硬盘数据能放多久?

近日收到一个网友的提问&#xff0c;在这里粗浅表达一下见解&#xff1a; “网传固态硬盘断电后数据只能放一年&#xff0c;一年之后就会损坏。但是我有一个固态硬盘已经放了五六年了&#xff08;上次通电还是在2018年左右&#xff0c;我读初中的时候&#xff09;&#xff0c;…

css实现渐进中嵌套渐进的方法

这是我们想要的实现效果&#xff1a; 思路&#xff1a; 1.有一个底色的背景渐变 2.需要几个小的块级元素做绝对定位通过渐变filter模糊来实现 注意&#xff1a;这里的采用的定位方法&#xff0c;所以在内部的元素一律要使用绝对定位&#xff0c;否则会出现层级的问题&…

HCIP.ppp协议(点到点)认证阶段

ppp协议 ppp是点到点的协议 1.兼容性很好 2.可以进行认证和授权 3.可移植性强 三个阶段 1.链路协商阶段 LCP协商------去协商ppp链路会话 2.认证&#xff08;可选&#xff09; 3.NCP协商------网络层协商阶段&#xff08;根据网络层的不同NCP协议就会存在一个对应的NC…

【电子通识】无源元件与有源元件的定义和区别是什么?

当提到构成电路的电子器件时,许多人可能会想到晶体管、电容器、电感器和电阻器等器件。一般情况下,我们使用的电子器件分为两大类,即“有源元件”和“无源元件”。 有源元件是主动影响(如放大、整流、转换等)所供给电能的元件。 无源元件是对所供给的电能执行被动…