component_drivers:Hardware component drivers framework with unified management interface

Hardware component drivers framework with unified management interface

分支57Tags0

从源码构建

推荐方式:使用智能构建脚本

# 克隆仓库后,使用智能构建脚本(推荐)
./scripts/smart_build.sh

智能构建脚本会:

  • 自动检测系统资源(CPU核数、内存、Swap等)
  • 根据可用内存动态计算最优并发数
  • 避免因过度并发导致的编译卡死问题
  • 提供彩色输出和进度提示

手动构建方式

# 配置构建
meson setup builddir

# 编译(使用1/4的核数进行编译)
((n=`nproc`/4)); meson compile -C builddir -j $n

# 运行测试
meson test -C builddir

# 清空重新全量编译、测试
rm -rf subprojects/libmcpp; rm -rf builddir; meson setup builddir; ((n=`nproc`/4)); time meson compile -C builddir -j $n; meson test -C builddir
rm -rf subprojects/libmcpp; rm -rf builddir; meson setup builddir; time meson compile -C builddir; meson test -C builddir

rm -rf builddir; meson setup builddir; ((n=`nproc`/4)); time meson compile -C builddir -j $n; meson test -C builddir

# 单个模块编译、测试
cd /root/openubmc/component_drivers

# 编译特定测试用例
meson compile -C builddir tests/drivers/chip/pca9545/test_pca9545_abi
meson compile -C builddir tests/drivers/chip/pca9555/test_pca9555_abi
meson compile -C builddir tests/drivers/chip/lm75/test_lm75_abi
meson compile -C builddir tests/drivers/chip/ads78/test_ads78_abi

# 运行特定测试套件
meson test -C builddir --suite=lm75
meson test -C builddir --suite=ads78
meson test -C builddir --suite=pca9555

编译问题解决方案

问题现象:如果不指定并发任务数量(-j 参数),默认使用所有核进行编译时,会出现:

  • 编译过程中卡住
  • CPU占用率100%
  • 系统响应缓慢,需要外界终止编译

根本原因:

  1. 高并发内存消耗:128个CPU核心同时编译时,每个g++进程消耗1-2GB内存
  2. 无Swap分区:系统没有配置Swap,内存不足时无法交换到磁盘
  3. 内存压力:瞬间内存需求可能超过可用内存,导致系统卡死

解决方案:

  1. 使用智能构建脚本(推荐):./scripts/smart_build.sh
  2. 手动限制并发数:使用 ((n=nproc/4)); meson compile -C builddir -j $n
  3. 配置Swap分区:为系统添加Swap分区作为内存缓冲
  4. 监控内存使用:编译前确保有足够的可用内存

最佳实践:

  • 对于大型项目,并发数 = min(CPU核数/4, 可用内存GB/2)
  • 没有Swap时应更保守,建议并发数不超过可用内存GB/3
  • 编译前释放不必要的内存占用

项目介绍

Hardware component drivers framework with unified management interface

定制我的领域