基于SMDK6410的BSP包结构分析

一 首先,大体介绍下sources文件的格式与含义:

1  TARGETNAME=XX
使用TARGETNAME来指示生成目标的文件名(不包含扩展名,扩展名PB会自动

2  RELEASETYPE=PLATFORM
RELEASETYPE指示该文件将要生成的类型,一共有五个取值:

Ø SDK:使用该类型将使得生成的目标文件被存储到%_PUBLICROOT%/Oak目录,而lib文件被放置到%_PUBLICROOT%/Sdk目录

Ø DDK:使用该类型将使得生成的目标文件被存储到%_PUBLICROOT%/Oak目录,而lib文件被放置到%_PUBLICROOT%/Ddk

Ø PLATFORM:使用该类型将使得生成的文件受平台控制

Ø LOCAL:该类型使得生成的文件全部放置到当前路径

Ø CUSTOM:该类型使得生成的文件放置到TARGETPATH制定的位置(也就是说必须要有TARGETPATH参数设置)

3 TARGETTYPE=DYNLINK
生成的目标类型,LIBRARY表示是一个lib库,DYNLINK则表示是dll,而PROGRAM则是一个exe文件

4 TARGETLIBS=
$(_COMMONSDKROOT)/lib/$(_CPUINDPATH)/xxx.lib
TARGETLIBS指示连接需要的库的名字如果一个库以DLL的形式提供给调用者,就需要用TARGETLIBS,它只链接一个函数地址,系统执行时会将被链接的库加载。比如coredll.lib就是这样的库文件。即动态链接。

5 SOURCELIBS=XX.lib
SOURCELIBS指示将于某一个lib一起连接。上面一个lib是需要什么就取什么,而这个lib则是连接所有的。将库中的函数实体链接进来。即静态链接,用到的函数会在我们的文件中形成一份拷贝。

6 DEFFILE=led.def
DLL文件的def文件名

7 INCLUDES=../../inc
指定include的路径

8 SOURCES=
XX.c
指定参与该规则的所有的源文件.

9 xxxENTRY定义入口函数

   如果TARGETTYPEDLL,则可以定义DLLENTRY,Dll入口定义成别的不是DLLMain的函数,如果DLL的入口是DllMain,则不需要别的定义。

如果TARGETTYPEEXE则可以定义EXEENTRY,用于指定EXE的入口函数

6.0BSP文件架构与sources文件分析

1 CATALOG文件夹

文件夹下有一个smdk6410.pbcxml文件,作用相当于5.0版本中的CEC文件,将BSP包添加到Platform中,6.0可以通过此文件识别BSP,自动添加。

2 Files文件夹

5.0作用相同,是有平台特定的配置文件组成,这些文件帮助创建操作系统镜像,主要完成包含驱动程序、写注册表设置和内存信息等任务。

3 Src

Ø Src/Apps存放与测试有关的文件

Ÿ Src/Apps/TKTEST中的sources文件分析:

调用文件test_tk.c,连接coredll.lib库,生成名为test_tk.exe的可执行文件。生成的文件在调用函数mainWCRTStartup运行(test_tk.exe的入口点为mainWCRTStartu)。

Ø Src/Common存放特定的硬件平台Bootloader程序与OAL层程序共用的源文件。

Ÿ Src/Common/Args中的sources文件分析:

调用args.c,生成文件名为:s3c6410_args,文件类型为LIB的库文件:s3c6410_args.lib

Ÿ Src/Common/Cache中的sources文件分析:

     调用源文件:flush.ccachemode.sflushdc.scleandc.scleardtlbentry.sclearitlbentry.sclearutlbentry.s,连接oal_cache_arm920t.lib库,生成目标文件:oal_cache_s3c6410.lib

Ÿ Src/Common/Intr

调用源文件:intr.cfiq.cmap.c,动态连接oal_intr.lib库,生成目标文件:oal_intr_s3c6410.lib

Ÿ Src/Common/Ioctl

动态连接oal_ioctl.liboal_getcpuid_s3c6410.lib,生成目标文件:oal_ioctl_s3c6410.lib

Ÿ Src/Common/Power

调用源文件off.c,静态链接oal_power.lib,生成目标文件:oal_power_s3c6410.lib

Ÿ Src/Common/Rtc

调用源文件:rtc.c,生成目标文件:oal_rtc_s3c6410.lib

Ÿ Src/Common/System

调用源文件:s3c6410_system.ss3c6410_stall.s,生成目标文件:s3c6410_system_lib.lib

Ÿ Src/Common/Timer

调用原文件timer.cdvs.c,生成目标文件:oal_timer_s3c6410.lib

Ø Src/Inc是有平台相关的头文件组成的,如CPU、寄存器地址和所有平台设备的地址等。

Ø Src/OAL是由实现OEM自适应层(OAL)功能的所有文件组成

Ÿ Src/OAL/OALLIB中的sources文件分析

调用源文件debug.cinit.cintr.cioctl.cpower.cstartup.s,生成目标文件:oal.lib

Ÿ Src/OAL/OALEXE中的sources文件分析

动态链接

oemmain.lib

nkstub.lib

nkldr.lib

oal.lib

s3c6410_system_lib.lib

oal_intr_s3c6410.lib

oal_ioctl_s3c6410.lib

oal_power_s3c6410.lib

oal_profiler_s3c6410.lib

oal_rtc_s3c6410.lib

oal_timer_s3c6410.lib

oal_misc_s3c6410.lib

s3c6410_args.lib

abort_arm920t.lib

al_cache_s3c6410.lib

oal_memory_arm.lib

oal_io.lib

oal_log.lib

oal_other.lib

fulllibc.lib

rne_mdd.lib,生成目标文件:oal.exe,定义入口函数为StartUp

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值