Linux C embed development (personal rveiew)

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.mzph.cn/web/43892.shtml

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

相关文章

攻防世界 Web_python_template_injection(flask模版注入)

学习文章&#xff1a;https://www.freebuf.com/column/187845.html https://blog.csdn.net/weixin_54515836/article/details/113778233 flask的渲染方法有render_template和render_template_string两种。 render_template()是用来渲染一个指定的文件的。使用如下 return re…

自学第十五天----深入理解函数上

1. 函数是什么&#xff1f; 维基百科中对函数的定义&#xff1a; 子程序 在计算机科学中&#xff0c;子程序&#xff08;英语&#xff1a;Subroutine, procedure, function, routine, method, subprogram, callable unit&#xff09;&#xff0c;是一个大型程序中的某部分代码…

python怎么求因数

要想做到python语言求因数方法&#xff0c;首先要明白其中的原理&#xff1a; 1、对由123456789这九个数字组成的9位数进行分解质因数。 2、1234576982x3x3x7x13x23x29x113&#xff0c;所以他的值因数是113。 3、总共有362880种可能&#xff0c;从中找出值因数中最小的数字和…

学生宿舍反限电插座控制功能

石家庄光大远通电气有限公司反限电插座功能的技术防止学生通过半波整流进行防止学生改变负载特性(阻性变为非阻性)的防止学生通过可控硅调压技术(进行功率调整达到使用目的)恶性负载限制次数设置:管理部门可以根据实际要求设定每个宿舍违规次数。达到本次数。系统自动锁定&…

Linux:Ubuntu18.04下开机自启动QT图形化界面

Linux&#xff1a;Ubuntu18.04下开机自启动QT图形化界面 Chapter1 Linux&#xff1a;Ubuntu18.04下开机自启动QT图形化界面一、创建rc.local文件二、建立rc-local.service文件三、启动服务查看启动状态四、重启 Chapter2 将QT应用作为开机自启动&#xff08;Linux系统&#xff…

代码能力弱,编程思维几乎没有,有些勉强能看懂,让自己敲,一脸懵逼?

最近有几个人问我&#xff0c;说自己代码能力弱&#xff0c;编程思维几乎也没有&#xff0c;简单的代码&#xff0c;勉强能看懂&#xff0c;让自己敲&#xff0c;就一脸懵逼&#xff0c;下一步该怎么学习&#xff1f; 10几年前&#xff0c;这些问题&#xff0c;就像是一道道难以…

1招搞定maven打包空间不足问题

目录 一、工具应用问题 二 、使用效果 三、使用方法 四、练习手段 一、工具应用问题 使用maven的package功能打包失败&#xff0c;报错“Java heap space”错误。 二 、使用效果 修改IDEA中maven内存使用大小后&#xff0c;打包成功。 三、使用方法 点击菜单“File->Set…

Docker 使用基础(3)—容器

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;秒針を噛む—ずっと真夜中でいいのに。 0:34━━━━━━️&#x1f49f;──────── 4:20 &#x1f504; ◀️ ⏸ …

let/const/var的区别及理解

在JavaScript中&#xff0c;let、const 和 var 是用来声明变量的关键字&#xff0c;但它们之间在作用域、变量提升、重复声明等方面存在区别&#xff0c;详细情况如下: 1. let、const、var 的区别 (1) 块级作用域 let 和 const&#xff1a;具有块级作用域&#xff0c;由 {} 包…

百数教学秘籍:三步走,轻松规划你的自动化计划任务

通过设定任务计划&#xff0c;用户可以轻松安排指定的功能插件或数据助手在特定时间自动执行&#xff0c;有效提高工作效率&#xff0c;还确保了数据的及时更新和处理。任务计划在应用启动时自动启动并在后台运行&#xff0c;无需用户持续监控&#xff0c;为用户带来极大的便利…

oracle哪些后台进程不能杀?

oracle 有很多的后台进程&#xff0c;在遇到特殊情况的时候如锁表&#xff0c;如果等待的是一个后台进程&#xff0c;那这时就需要考量是不是能杀掉这个后台进程&#xff1f;杀掉这个后台进程会不会引起实例崩溃&#xff1f;本着实践出真知&#xff0c;本文针对oracle 11g&…

游戏开黑语音-使用云服务器部署teamspeak服务(系统Ubuntu 20.04 LTS)

目录 前置物品服务器调整及部署1.重装系统2.换源3.下载teamspeak服务端并部署 连接服务器参考 前置物品 一台云服务器&#xff08;系统&#xff1a;Ubuntu 20.04 LTS) 服务器调整及部署 1.重装系统 在腾讯云官网的主机控制台内&#xff0c;选择重装系统 (由于之前为了快点和…

【刷题汇总 -- 最长回文子串、买卖股票的最好时机(一)、[NOIP2002 普及组] 过河卒】

C日常刷题积累 今日刷题汇总 - day0101、最长回文子串1.1、题目1.2、思路1.3、程序实现 2、买卖股票的最好时机(一)2.1、题目2.2、思路2.3、程序实现2.4、程序实现 -- 优化 3、[NOIP2002 普及组] 过河卒3.1、题目3.2、思路3.3、程序实现 -- dp 4、题目链接 今日刷题汇总 - day0…

Linux 入门教程 by 程序员鱼皮

本文作者&#xff1a;程序员鱼皮 免费编程学习 - 编程导航网&#xff1a;https://www.code-nav.cn 大家好&#xff0c;我是鱼皮。 前两天我学编程的老弟小阿巴过生日&#xff0c;我问他想要什么礼物。 本来以为他会要什么游戏机、Q 币卡、鼠标键盘啥的&#xff0c;结果小阿巴…

短视频矩阵:批量发布的秘密揭秘

在数字化时代&#xff0c;短视频已经成为一种广受欢迎的媒体形式。无论是用于品牌推广、产品营销还是个人创作&#xff0c;短视频都提供了一种直观、生动的方式来吸引观众的注意力。然而&#xff0c;有效地制作、管理和发布短视频对于许多创作者和企业来说是一个挑战。 为此&am…

什么是 C 语言中的宏定义?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; &#x1f4d9;C 语言百万年薪修炼课程 通俗易懂&#xff0c;深入浅出&#xff0c;匠心打磨&#xff0c;死磕细节&#xff0c;6年迭代&#xff0c;看过的人都说好。 文章目…

动态规划之数字三角形模型+最长上升子序列模型

首先&#xff0c;我们从集合角度重新看待DP&#xff1a; 直接看题&#xff1a;https://www.acwing.com/problem/content/1029/ 就是取纸条的原题&#xff0c;我们令f[i1,j1,i2,j2]表示从(1,1),(1,1)分别走到(i1,j1),(i2,j2)的路径的max i1j1i2j2&#xff0c;于是我们可以把状…

机器学习 | 对K-Means聚类假设的研究演示及实践示例

我们在Scikit-learn对K-means假设的调查中探索了揭示算法优势和局限性的场景。我们研究了K-means对不正确的聚类大小的敏感性&#xff0c;它在各向异性分布中面临的困难&#xff0c;它在不同的聚类方差中面临的困难&#xff0c;以及使用合成数据集的大小不均匀的聚类问题。我们…

准备工作+1、请求和响应+2、模型和管理站点

Django快速入门——创建一个基本的投票应用程序 准备工作1、创建虚拟环境2、安装django 1、请求和响应&#xff08;1&#xff09;创建项目&#xff08;2&#xff09;用于开发的简易服务器&#xff08;3&#xff09;创建投票应用&#xff08;4&#xff09;编写第一个视图1、编写…

家用激光投影仪品牌排行榜:这几个品牌口碑好产品好最适合家用

现在人们生活水平提升&#xff0c;对投影这类产品的认知接受度也提升&#xff0c;有条件的家庭都想在家里整一个家庭影院&#xff0c;对于这些消费者来说挑选一台性价比高的家用投影至关重要&#xff0c;既省到钱又买对了产品&#xff1b;投影市场发展迅速目前市面上大大小小的…