ARMwince调试笔记Word下载.docx
- 文档编号:22087833
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:18
- 大小:44.42KB
ARMwince调试笔记Word下载.docx
《ARMwince调试笔记Word下载.docx》由会员分享,可在线阅读,更多相关《ARMwince调试笔记Word下载.docx(18页珍藏版)》请在冰豆网上搜索。
2)drivers文件夹:
3)inc文件夹:
4)kernel文件夹:
5)dirs文件:
该文件和外面的那个dirs文件是什么关系呢?
3、dirs文件
4、mini2440的类似于批处理文件
5、mini2440.cec文件
6、sources.cmn文件
编译结束后,会多出几个文件,
1、target文件夹
2、build为名字的几个文件,记录信息。
3、lib文件夹
4、bif文件
编译完成后,报告如下:
mini2440-0error(s),36warning(s),经网上查找,warning数目都一样大多数都这样,属正常。
具体warning如下:
regcomp:
WARNING,syntaxerroronornearline6785ofreginit.ini;
lineskipped.
WARNING,syntaxerroronornearline6786ofreginit.ini;
WARNING,syntaxerroronornearline6792ofreginit.ini;
WARNING,syntaxerroronornearline6793ofreginit.ini;
WARNING,syntaxerroronornearline6794ofreginit.ini;
WARNING,syntaxerroronornearline6800ofreginit.ini;
WARNING,syntaxerroronornearline6801ofreginit.ini;
WARNING,syntaxerroronornearline6807ofreginit.ini;
WARNING,syntaxerroronornearline6808ofreginit.ini;
makeimg:
WarningLocalizationFAILED:
Couldnotfind
\WINCE500\PBWorkspaces\lizhao2\RelDir\mini2440_ARMV4I_Release\tsvc_dst.DLL|EXE|CPL
Warning:
Mismatchedtimestampon.relfileformoduleusbmsfn.dll
No.relfilefoundformoduleusbmsfn.dll,usingoldfixupstyle.
No.relfilefoundformodulesqlcecompact30.dll,usingoldfixupstyle.
No.relfilefoundformoduledbnetlib.dll,usingoldfixupstyle.
编译过程中,用到了D盘下wince500\platform下的函数库,
最后在原来只有mini2440.pbxml的lizhao2文件夹中,多出了
1、mini2440NCB文件
2、mini2440.opt文件
3、mini2440html文件,该文件中存有错误与警告信息
4、wince500文件夹,内有mini2440_armv4I文件夹:
1)cesysgen文件夹:
内有ddk,oak,sdk文件夹
2)OAK文件夹,内有files和MISC文件夹
其中files文件夹下包括project.reg和project.bib文件,以及project.dat文件。
注意,最后要修改的应该是platform.reg和platform.bib,这里面是没有platform的文件的
Platform.bib是很重要的。
它决定了那些东西进入NK,
MISC文件夹下包括了MS_DOS批处理文件
3)SysgenSettings.out文件
5、Reldir文件夹,内有
1)mini2440_ARMV4I_Release文件夹:
内部就是编译结束的最终文件们。
(1)其中NK.bin和NK.nb0就在里面。
Bin用于烧入flash,nb0用于内存运行。
(2)其中还有大量的.dll等
(3)以及写入OS的应用程序
(4)以及platform.bib和project.reg
2)mini2440_ARMV4I_Debug文件夹:
空
从前两次的错误来看,在生成内核镜像时,先会生产.dll,.pdb,.exe等文件,最后再组装,生成NK
2011-5-21下午
驱动程序编译步骤:
1、建立要创立的驱动所在的目录:
如在x:
\Wince500kplatformkcayman\drivers目录下建立一个mydriver目录。
在这里,就是该目录
\WINCE500\PLATFORM\mini2440\Src\Drivers
注意,这个目录存在于BSP包中,该包由mini2440.cec文件注册到platform编译平台下。
2、编辑dirs文件:
1)在D:
\WINCE500\PLATFORM\mini2440路径下的dirs:
DIRS=src
2)在D:
\WINCE500\PLATFORM\mini2440\Src路径下的dirs:
DIRS=common\
drivers\
kernel
3)在D:
\WINCE500\PLATFORM\mini2440\Src\Drivers路径下的dirs:
DIRS=ceddk\
serial\
usb\
Backlight\
Display\
camera\
IIC\
SDHC\
touch\
wavedev\
DM9000\
LedDriver\
WDT\
PWM\
UserKey
4)在D:
\WINCE500\PLATFORM\mini2440\Src\Common路径下的dirs:
DIRS=abort\
cache\
intr\
io\
ioctl\
memory\
power\
rtc\
timer\
profiler\
smartmedia
5)在D:
\WINCE500\PLATFORM\mini2440\Src\Kernel路径下:
DIRS=\
oal\
kern\
kernkitl\
kernkitlprof
可能有这几个问题:
1)inc文件没有dirs,可能只有.c文件才有dirs
2)但凡有.c文件的话,就一定要给编译器通知他的位置,就是dirs文件要建立和修改。
从而使编译器自动编译该目录下的源文件。
这里就是userkey文件夹,然后把相关的驱动程序放在这个文件夹下面。
3、驱动程序编写,即相应的.c/cpp文件和相应的.h文件编写。
在这里,应该是:
1)userkey.cpp:
驱动程序的实现
2)s2440.h:
本驱动程序用到的头文件。
注意.cpp的头文件包含:
用到1、PB库的文件,用<
>
;
2、bsp中的文件,用””;
3、自己编写的头文件,用””。
4、创建.def文件,该文件作用就是驱动函数接口的申明:
实际上就是dll中导出的函数
内容:
LIBRARYuserkey
EXPORTS
KEY_Close
KEY_Deinit
KEY_Init
;
KEY_IOControl
KEY_Open
KEY_PowerDown
KEY_PowerUp
KEY_Read
KEY_Seek
KEY_Write
5、sources文件和makefile文件:
在参考资料中提到,这两个文件是编译时自动产生的?
这句话是什么意思?
但是从TQ提供的开发手册中看到,makefile和sources这两个文件也是要自己写的,当然这都不要紧,关键是格式要对,可以详见TQ
Sources文件内容:
!
if0
File:
sources
Author:
jeffmi
Copyright(c)1995-2002MicrosoftCorporation.Allrightsreserved.
endif
RELEASETYPE=PLATFORM
TARGETNAME=USERKEY
TARGETTYPE=DYNLINK
DLLENTRY=DllEntry
TARGETLIBS=\
$(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib\
MSC_WARNING_LEVEL=$(MSC_WARNING_LEVEL)/W3/WX
INCLUDES=\
$(_TARGETPLATROOT)\inc;
\
$(_COMMONOAKROOT)\inc;
$(_PUBLICROOT)\common\oak\inc;
$(_PUBLICROOT)\common\sdk\inc;
$(_PUBLICROOT)\common\ddk\inc;
..\..\inc
SOURCES=\
userkey.cpp\
makefile文件内容:
#DONOTEDITTHISFILE!
Edit.\sources.ifyouwanttoaddanewsource
#filetothiscomponent.Thisfilemerelyindirectstotherealmakefile
#thatissharedbyallthecomponentsofPeg
#
INCLUDE$(_MAKEENVROOT)\makefile.def
6、使用ceceditor生成cec文件
CEC文件是目录特征文件。
这个文件用于将自定义的目录特征导入到PlatformBuild的特性目录“catalog”中。
其中内容:
1)CEClnfo:
关于一个CEC文件的基本信息,如名称、厂
家、描述等信息;
2)ComponentType:
特性组或者一个普通特性,它可以包
含多个实现;
3)Implementation:
一个实现定义一个部件的类型;
4)BuildMethod:
建立系统的消息,用来建立或展开这个特
性到操作系统镜像中;
5)Biblnfo:
对于一个实现来描述这个project.bib。
当生成CEC文件后,将其导入到PIaffOrmBuild的“cata.1og”中:
单击工具栏上“addthececfiletothecatalog”按钮将此CEC文件导入到“catalog”中。
在定制内核时,在“catalog”中右键点击此驱动,选择“AddtoOSDeisgn”按钮,这样流驱动程序在编译内核时就加载进内核。
7、编辑platform.reg文件和platform.bib文件
.reg文件:
在注册表中建立驱动程序入口点,这样设备管理器才能识别和管理这个驱动。
因此修改平台注册表文件platform.reg信息如下:
IFBSP_NOBUTTON!
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\userkey]
"
Prefix"
="
KEY"
Dll"
userkey.dll"
Order"
200"
ENDIFBSP_NOBUTTON!
DLL项是设备管理器在加载驱动时需要的DLL名称;
Pre.fix代表了设备前缀;
0rder是驱动程序被加载的顺序。
.bib文件:
platrorm.bib文件用于定义操作系统运行时映像中都包含哪些模块和文件,编译阶段使用bib文件决定如何将这些模块和文件加载到目标设备的存储器中。
bib文件包括四部分:
1)MEMORY:
定义物理内存开始地址,大小和类型;
2)CONFIG:
为Romimage.exe的定制输出配置选项;
3)M0DULES:
指定加入镜像的对象模块信息;
4)FILES:
指定为lib文件保留的内存。
只需修改MODULES部分,在其后面添加如下语句:
mydriver.DII$(一FLATRELEASEDIR)~-nydriverDIINKSH
在这里:
userkey.dll$(_FLATRELEASEDIR)\userkey.dllNKSH
8、至此,驱动加载完成,就可以重新生成镜像文件并下板子了。
这里需要注意两个问题:
1)如果用sysgen,就要在BSP中修改上述东西(platform下)
2)如果用make,就在NK生成文件夹下面修改(PBworkspaces下)
注意在进行一次完整编译以后,以后就可以进行快速编译了,具体方法见TQ的手册。
2011-5-26:
上午
EA2440按键原理图:
选用SW4:
GPG11/EINT19:
此外:
EINT0:
即就是GPF0
EINT2:
即就是GPF2
GPG3/EINT11:
GPG11/EINT19:
复位按键:
SW5是复位按键。
流驱动开发
一、Step1:
建立地址映射头文件s2440.h:
1、文件说明:
直接拷贝自:
\WINCE500\PLATFORM\mini2440\Src\Drivers\Userkey
该文件的说明中:
有
//Copyright(c)MicrosoftCorporation.Allrightsreserved.
ModuleName:
Abstract:
ARM920(S3C2440)definitions
这样一段文字,说明了该.h的用途。
此外,说明这是微软公司为S3C2440提供的专用的头文件,可以采取拿来主义。
2、文件内容:
(1)首先定义了一些文字表意符:
如:
#defineHCLKDIV4
#defineS2440HCLK(S2440FCLK/HCLKDIV)//PCLK.
(2)这些define包括:
//Boardtimerconstants.
//DefineLCDtypeofS3C2400X01
还有一些difine就和功能模块一样,放在(3)功能寄存器定义中。
(3)功能寄存器定义:
//DefineS3C2440SpecialRegisters
//Registers:
NANDControllerFWOOD0801
//MemoryControllerRegister
//Clock&
PowerManagementSpecialRegister
//DMARegister
//Register:
CameraInterface
I/Oport
PWM
//2440USBDEVICEFunction(WrittenbySeung-han,Lim)
InterruptController
//S3C2440X01Interruptcontrollerbitpositions
//S3C2440X01Interruptcontrollersourcenumber
//S3C2440X01InterruptcontrollerbitpositionsforSUBsourcependingbit.
LCDController:
这是由板子制造厂家提供的。
(4)重点寄存器说明——I/Oport:
提供代码:
I/Oport
//它应该是像linux一样,通过物理地址到虚拟地址的映射来实现,通过MMU
#defineIOP_BASE0xB1600000//0x56000000
//注意:
这里的0x56000000才是物理地址,而0xB1600000应该是wince的虚拟地址
typedefstruct{
unsignedintrGPACON;
//00
unsignedintrGPADAT;
unsignedintrPAD1[2];
unsignedintrGPBCON;
//10
unsignedintrGPBDAT;
unsignedintrGPBUP;
unsignedintrPAD2;
unsignedintrGPCCON;
//20
unsignedintrGPCDAT;
unsignedintrGPCUP;
unsignedintrPAD3;
unsignedintrGPDCON;
//30
unsignedintrGPDDAT;
unsignedintrGPDUP;
unsignedintrPAD4;
unsignedintrGPECON;
//40
unsignedintrGPEDAT;
unsignedintrGPEUP;
unsignedintrPAD5;
unsignedintrGPFCON;
//50
unsignedintrGPFDAT;
unsignedintrGPFUP;
unsignedintrPAD6;
unsignedintrGPGCON;
//60
unsignedintrGPGDAT;
unsignedintrGPGUP;
unsignedintrPAD7;
unsignedintrGPHCON;
//70
unsignedintrGPHDAT;
unsignedintrGPHUP;
unsignedintrPAD8;
unsignedintrMISCCR;
//80
unsignedintrDCKCON;
unsignedintrEXTINT0;
unsignedintrEXTINT1;
unsignedintrEXTINT2;
//90
unsignedintrEINTFLT0;
unsignedintrEINTFLT1;
unsignedintrEINTFLT2;
unsignedintrEINTFLT3;
//A0
unsignedintrEINTMASK;
unsignedintrEINTPEND;
unsignedintrGSTATUS0;
//AC
unsignedintrGSTATUS1;
//B0
unsignedintrGSTATUS2;
//B4;
SHL
unsignedintrGSTATUS3;
//B8
unsignedintrGSTATUS4;
//BC
unsignedintrFLTOUT;
//C0
unsignedintrDSC0;
unsignedintrDSC1;
unsignedintrMSLCON;
unsignedintrGPJCON;
//D0
unsignedintrGPJDAT;
unsignedintrGPJUP;
unsignedintrPAD9;
}IOPreg;
以下引自sumsungS3C2440说明:
GPACON0x56000000R/WCon
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARMwince 调试 笔记