//=====================================================================
//TITLE:
// TCC89x的GPIO使用解说
//AUTHOR:
// norains
//DATE:
// Friday 05-November-2010
//Environment:
// Windows CE 6.0
// Telechips TCC8900
//=====================================================================
当接触一款新的CPU之时,如果想了该这款CPU,那么最简单就是从GPIO开始。对于已经并不是新品的TCC89x系列来说,自然也是如此。那么,现在我们就开始,看看如何操作这个GPIO吧。
Telechips为了简化代码,特意定义了一个GPIO的结构体,其定义如下:
大家都知道,寄存器是32bit,而结构体的每一项恰好也是声明为32bit,这样的好处就是,如果结构体的指针指向GPIO寄存器的初始地址,那么结构体的成员就能够和寄存器一一对应。
现在的问题就是,我们该如何获取GPIO寄存器的初始地址?查看DataSheet,如图:
可以得知GPIO寄存器的初始地址为0xF0102000。但这个地址我们不能直接使用,比如下面这句代码就会出错:
那么,我们该如何获取这寄存器的地址呢?这时候,就需要借助于Telechips的BSP下面的tcc_allocbaseaddress函数了。该函数传入GPIO的硬件地址,然后返回一个当前进程可使用的已经印射好的虚拟内存地址。使用方式很简单,如:
不过这里需要注意的是,tcc_allocbaseaddress只能在驱动函数中使用。如果你不幸地放在了应用程序,那么等待你的依然会是个错误。那么对于应用程序而言,是不是就束手无措,无法操作GPIO了呢?非也,Telechips其实也考虑到了这点。只不过,这时候需要借助于KernelIoControl函数,代码如下所示:
初始地址获取完毕之后,我们就可以对成员变量进行操作了。
分享到:
相关推荐
TC-TCC89x-WinCE-AM-1000-2.80-Quick_Start_Guide,telchips的wince开发文档。
有完整的Magellan TCC 89XX 开发资料,全部为PDF档,还有BSP。
TCC89xx LINUX_BSP_100205-R0170B2750_part4--ramdisk
TCC89XX TCC8900_CHIP_SPEC_V0.01_B_Preliminary.pdf
这时我在业余时间用贴图完成的TCC890x WinCE下的高清播放器。所有按钮,进度显示等都是通过贴图实现。
TCC89XX_CHIP_SPEC By Telechips
TCC89xx LINUX_BSP_100205-R0170B2750_part6--util
TCC8900原厂底板原理图_TCC89_91_92XX_DEMO_V1.2_RELEASE.pdf telechips TCC8900 demo board 原版原理图
Telechips Windows® CE BSP Telechips BSP (Board Support Package) for TCC79x
TCC8925x_35_M805S_D3_08X4_V11A_130219-9526 原理图 里面含有TCC8925x 的芯片资料含有芯片有关的原理图
非常详尽的telechips tcc89xx 91xx 92xx芯片wince开发文档
TELECHIPS TCC8900 Datasheet
韩国telechips公司TCC7901的BSP,做相关平台可以学习一下哦~
TCC89/92XX 3D Driver.pdf TCC89/92XX 3D Driver.pdf
车载多媒体导航用,汽车级SOC。 Android支持:4.4~6.0 特性:10秒快速启动,快速倒车视频显示,集成噪声与回音消除算法
TCC89xx LINUX_BSP_100205-R0170B2750_part1--bootloader
关于修改屏幕分辨率的步骤 第一, 修改:\WINCE600\PLATFORM\Magellan\Magellan...改成你想要的分辨率,使用16进制 (320)10=(140)16,(240)10=(F0)16 第二, 修改:\WINCE600\PLATFORM\Magellan\Src\BOOT\lcd.h里面的 ....
TCC89_91_92XX_DEMO PCB
TCC803x Full Specification V0.10.pdf