当前位置: 首页 > news >正文

阿里网站如何做接入/国外网站制作

阿里网站如何做接入,国外网站制作,高品质网站欣赏,党建设计网站问题背景 在项目中采用firefly core-1126-jd4的sdk适配其他rv1126板卡遇到kernel启动中无响应。串口能看到运行到usb、mmc等模块驱动流程,但之后就打印,通过追加打印确认usb、mmc模块的init已经执行完,怀疑是执行其他某个静态编译进kernel的…

问题背景

在项目中采用firefly core-1126-jd4的sdk适配其他rv1126板卡遇到kernel启动中无响应。串口能看到运行到usb、mmc等模块驱动流程,但之后就打印,通过追加打印确认usb、mmc模块的init已经执行完,怀疑是执行其他某个静态编译进kernel的模块init中失去响应,但该模块失去响应前并未有任何打印,所以不确定具体是哪个模块。茫茫kernel数百上千个模块难以分析。

问题定位

kernel源码的init/main.c文件中有个二维函数地址表initcall_levels,定义如下:

extern initcall_entry_t __initcall_start[];
extern initcall_entry_t __initcall0_start[];
extern initcall_entry_t __initcall1_start[];
extern initcall_entry_t __initcall2_start[];
extern initcall_entry_t __initcall3_start[];
extern initcall_entry_t __initcall4_start[];
extern initcall_entry_t __initcall5_start[];
extern initcall_entry_t __initcall6_start[];
extern initcall_entry_t __initcall7_start[];
extern initcall_entry_t __initcall_end[];
static initcall_entry_t *initcall_levels[] __initdata = {__initcall0_start,__initcall1_start,__initcall2_start,__initcall3_start,__initcall4_start,__initcall5_start,__initcall6_start,__initcall7_start,__initcall_end,
};
static char *initcall_level_names[] __initdata = {"pure","core","postcore","arch","subsys","fs","device","late",
};

一级索引表示等级,二级地址表示各个等级内模块的数组,二级数组中每一项都是链接脚本中的一个内存段,各个数组与内存段的对应关系如下:
__initcall_start --> .initcallearly.init
__initcall0_start --> .initcall0.init
__initcall1_start --> .initcall1.init
__initcall2_start --> .initcall2.init
__initcall3_start --> .initcall3.init
__initcall4_start --> .initcall4.init
__initcall5_start --> .initcall5.init
__initcall6_start --> .initcall6.init
__initcall7_start --> .initcall7.init
__initcall_end --> .con_initcall.init
各个段都有一系列module的init函数。
kernel在kernel_init中会根据该二维表逐个调用各层级各模块的init函数以加载各模块。
有个do_initcalls会do_initcall_level函数
kernel_init
---->kernel_init_freeable
-------->do_pre_smp_initcalls (遍历加载.initcallearly.init中的模块)
-------->do_basic_setup
---------------->do_initcalls (遍历加载.initcall0.init~.initcall7.init各内存段中的各模块)
-------------------------------->do_initcall_level (遍历加载具体内存段中的各模块)xs
其中do_initcall_level 实现如下(加入追踪打印):

static void __init do_initcall_level(int level)
{// 忽略无关逻辑for (fn = initcall_levels[level]; fn < initcall_levels[level+1]; fn++) {printk("aaaa %pF\n",initcall_from_entry(fn));do_one_initcall(initcall_from_entry(fn));printk("bbbb\n");}
}

内核中除了极个别早期模块会在do_pre_smp_initcalls中加载,大多数模块在do_initcall_level中加载。
根据打印在aaaa mdev_misc_init之后并没有bbbb打印,确认内核在mdev_misc模块中失去响应。
然而grep搜遍内核并未见mdev_misc模块在哪里实现,反而是在vmlinux及mmc_blk_data两个二进制文件中有mdev_misc_init字符串,通过file确认mmc_blk_data是firefly通过ar打包多个.o文件的集合静态库。
kernel/drivers/mmc/core/Makefile中有如下片段:

obj-$(CONFIG_MMC_BLOCK)		+= mmc_block.o
mmc_block-objs			:= block.o queue.o
mmc_block-objs          += mmc_blk_data

其中mmc_block.o及mmc_block-objs并非真实的编译单元文件及编译目标规则,只是一种目标依赖传导规则,表示通过obj-$(CONFIG_MMC_BLOCK)加入mmc_block.o目标,而mmc_block-objs表示mmc_block.o并不从mmc_block.c文件编译而来,而是关联到block.o queue.o mmc_blk_data三个文件,其中block.o queue.o分别是各自c源码编译而来,mmc_blk_data为预置静态库,不提供源码。
追踪代码确定block.c中调用的mmc_blk_data中实现的mmc_blk_data_init与mmc_blk_data_deinit两个函数。
修改如下:

// #include "block_data.h" 取消该头文件引用
// 忽略无关逻辑
if (card->host->restrict_caps & RESTRICT_CARD_TYPE_EMMC) {// mmc_blk_data_init(md); 注掉对mmc_blk_data_init调用
}
// 忽略无关逻辑
if (card->host->restrict_caps & RESTRICT_CARD_TYPE_EMMC) {// mmc_blk_data_deinit(md); 注掉对mmc_blk_data_deinit调用
}

再次编译kernel烧写即可运行通过。

http://www.whsansanxincailiao.cn/news/32025630.html

相关文章:

  • 无锡做网站企业/百度大数据查询平台
  • 开发一个交易平台需要多少钱/电脑优化系统的软件哪个好
  • 长沙做网站微联讯点很好/营销渠道策略
  • 万网域名查询工具/seo网站推广的主要目的
  • 做网站需要学什么专业/优化网站关键词的技巧
  • 网站规划与建设/企业网站推广有哪些
  • 网站制作开票几个点/每日新闻
  • b2c电子商务网站开发/重庆seo技术博客
  • 济南外贸网站制作/免费好用的网站
  • 付费阅读网站代码/短链接在线生成器
  • 宣威网站建设/安徽网络seo
  • 品牌网站建设3小蝌蚪/站长工具大全集
  • 免费做外贸网站/seo诊断报告
  • 东莞seo建站优化工具/网络营销策划推广公司
  • 如何用VS2017做网站/网站排名优化+o+m
  • 铜川做网站/seo研究协会网
  • 阿里云 ip 网站/如何找客户资源
  • oa系统网站建设方案/好网站制作公司
  • 免费做网站报价/服务营销案例
  • 自己做网站需要学什么/百度账户代运营
  • 道真县住房和城乡建设局网站/宁波seo哪家好
  • 网站建设蓝图ppt/网页设计与制作软件
  • 如何建设网站pdf下载/教育培训网站大全
  • 电子商务网站策划书模板/网络营销的工具和方法
  • 网站php源码破解版/哪家建设公司网站
  • 微信网站建设报价表/国际军事最新消息今天
  • 网页设计与网站建设第4章在线测试/成功营销案例100例
  • 做网站付多少定金/网络营销案例ppt
  • 扬州工程建设信息 网站/浙江网站seo
  • 网站建设案例收费情况/广告传媒公司