FB44B0开发板测试笔记
FB44B0开发板使用三星Samsung的S3C44B0处理器,对这款开发板感兴趣的地方在于它提供IDE接口。
现在支持IDE的开发板并不多见了,研究之后只有TE2440-II,使用三星S3C2440处理器,YL9200,使用ATMEL的AT91RM9200芯片。但价格都偏贵。这款44B0开发板以120元二手价格买到。
FB44B0开发板是44B0开发板中的简化板,没有核心板,全部集成在一张电路板上
板子上的FLASH芯片很奇怪,使用的是AMD的AM29LV160MB,(虽然芯片上的印字是AM29LV160DB,估计是封装时的错误吧)
JTAG接口是14针的,使用JLINK V8无法链接,也许是连接线的问题,反正没调出来
JTAG调试器只能使用Wiggler Parallel并口JTAG调试器
现在找到一台带并口的台式机也不容易了
所以现买了一个USB转并口,还买错了,现在很多都是所谓“打印线”,在XP和Win7中以USBPRINT驱动,转化为USB001端口打印
之后买了USB转真并口,好像是个德国芯片和驱动,驱动只能用在XP的32bit版本中,(Windows7的设置会很麻烦),结果还不好使
实际上,JTAG的用处只有重新烧录FLASH,还有进行DEBUG。
对于DEBUG还是不要过于依赖JTAG的好,44b0自带的启动程序是可以在内存中下载执行程序的,用输出的方式调试感觉更加有效
连接主板的串口1设置速率115200可以接收到以上输出
这个启动程序支持下载和执行
comrun
指令通过串口下载并执行
只能使用DNW工具下载,其他都不好用
netrun
netload
都需要使用TFTP向主板推送
在ADS中编译是必须指定传送的二进制执行文件必须是bin格式
烧录FLASH时必须使用
烧录工具和JTAG的支持工具都是比较老的,只能在XP的32位系统中执行
烧录的文件是HEX格式的,感觉BANYAN还是比较好用,虽然只是测试版
FlashPgm也可以成功烧录
对主板的测试的最主要目的还是了解IDE的控制方法
主板的例程源码有误,正确的寄存器定义如下,(已经过测试)
#defineIDE_DAT0x4000002#defineIDE_ERR0x4000012#defineIDE_FEATUREIDE_ERR#defineIDE_SEC_CNT0x4000022#defineIDE_SEC_NUM0x4000032#defineIDE_LBA0IDE_SEC_NUM#defineIDE_LBA10x400000a#defineIDE_LBA20x400001a#defineIDE_LBA30x400002a//#defineIDE_LBA_SEL0x400002a#defineIDE_CMD0x400003a#defineIDE_STATUS0x400003a#defineIDE_ALT_STATUS0x0400002c//R->3F6h#defineIDE_DEV_CTRL0x0400002c//W->3F6h#defineIDE_DRV_ADDR0x0400003c//R->3F7h
所有这些寄存器都可以和PC主板对应
根据ATA7的标准描述,定义了DEVICE IDENTIFY命令的结构
staticunionUN_HD_DEV_IDENT{U8byte[512];U16dat[256];struct_s_devid{struct_s_conf{U16rev_0:2;U16resp_incomp:1;U16rev_1:4;U16removable:1;U16rev_2:7;U16ata:1;//0=ata}s_conf;//0U16rev_1;//1U16spec_conf;//2U16rev_3[7];//3-9U8serial_number[20];//10-19U16rev_20[3];//20-22U8firmware_version[8];//23-26U8model_number[40];//27-46struct_s_multi_cmd{U16max_num:8;//00h=resv01h-ffh=maxmulticommandnumberU16fix:8;//80h}s_multi_cmd;//47U16rev_48;//48struct_s_compability{U16rev0:8;U16dma:1;U16lba:1;U16iordy_disable:1;U16iordy_support:1;U16rev12:1;U16standby:1;U16rev14:2;}s_compability;//49U16compability2;//50U16rev_51[2];//51-52U16ref53;//53U16rev_54[5];//54-58U16multi_sector;//59U16user_sector_number[2];//60-61U16rev_62;//62U16multi_word_dma[6];//63-68U16rev_69[6];//69-74U16max_queue;//75U16rev_76[4];//76-79struct_s_major_number{U16rev0:1;U16ata1:1;U16ata2:1;U16ata3:1;U16ata4:1;U16ata5:1;U16ata6:1;U16ata7:1;U16ata8:1;U16ata9:1;U16rev10:6;}s_major_number;//80U16minor_number;//81struct_s_cmd_set{U16smart:1;U16security:1;U16removable:1;U16power_manage:1;U16rev4:1;U16write_cache:1;U16look_ahead:1;U16release_intr:1;U16serv_intr:1;U16reset:1;U16protect_area:1;U16rev11:1;U16write_buf:1;U16read_buf:1;U16nop:1;U16rev15:1;}s_cmd_set;//82U16cmd_sets;//83U16cmd_set_ext;//84struct_s_cmd_sets_cmd_set_enable;//85U16cmd_sets_enable;//86U16cmd_set_ext_enable;//87U16dma_mode;//88U16value89[6];//89-94U16stream[5];//95-99U8user_max_lba[8];//100-103U16stream_pio;//104;U16rev105;//105struct_s_phy_lgc_sec{U16lgc_per_phy:4;//2^?U16rev4:8;U16longer:1;//longerthan256wordsperlogicsectorU16multi_logic:1;//multilogicperphysectorU16value14:2;//bitsetto14:115:0}s_phy_lgc_sec;//106U16interseek;//107U16uniqueid[4];//108-111U16rev112[5];//112-116U16words_per_logic[2];//117-118U16rev119[8];//119-126U16removable_status;//127U16sec_status;//128U16vendor129[31];//129-159U16cfa_power;//160U16rev161[15];//161-175U16serial_number_vendor[30];//176-205U16rev206[49];//206-254U16integrity;//255}s_devid;}u_hdpara;
寄存器同样支持LBA48协议
U8ReadSectorLBA48(longlonglba){U8lbas[6];U16dat;intii;U8stt;for(ii=0;ii<6;ii++){lbas[ii]=lba;lba>>=8;}SetIdeCount(0);SetIdeCount(1);SetLBA2(lbas[5]);SetLBA1(lbas[4]);SetLBA0(lbas[3]);SetLBA2(lbas[2]);SetLBA1(lbas[1]);SetLBA0(lbas[0]);SetDrvLBA3(0xE0,0);while((inportb(IDE_STATUS)&0xC0)!=0x40);SetIdeCmd(0x24);while((inportb(IDE_STATUS)&0x88)!=0x08);for(ii=0;ii<256;ii++){dat=GetIdeData();printf("0x%04x",dat);}printf("\n");stt=inportb(IDE_STATUS);while((stt&0x88)!=0x00){stt=inportb(IDE_STATUS);}returnstt;}
完整程序参照附件
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。