对于x210而言,在三星中与九鼎官方的uboot都默认使用了二号串口。详见CONFIG_SERIALn(n=1~4)。
更改串口后,应先插回原串口,进行iROM打印,内部iNnad校验核失败的信息,之后再插入其串口进行启动。
修改CCONFIG_NETMASK等多个宏可以修改默认的网络环境。在进行完成修改后,如果依旧没进行改变,则应对iNand ENV分区进行擦除,因为当iNand在校验环境变量是依旧可用的所以未对环境变量进行更新,有优先级关系。
mmc write 0 0x30000000 11# 32的意思就是将iNnad的第17扇区向后的32扇区个扇区内写入内容为0x30000000中的值。1个扇区是512字节,32个扇区就是16kb。
修改CFG_PROMPT宏可修改提示符,CONFIG_IDENT_STRING可修改开发板名。
开发板上网的方式有两种:①SOC自带网卡。②外接网卡。x210使用的是DM9000网卡芯片,有48个引脚。
总线式扩展:通过地址进行直接寻址。非总线式拓展(Nandflash/SD卡)通过时序进行操作。 网卡是总线式扩展,通过SROM接入,通过8/16bit总线链接NOR Flash/PROM/SROM。
SROM是:
网卡将自己伪装为SRAM/ROM接在SROM中,优点是网卡就是以存储器方式进行拓展在SOC上,可以直接通过地址进行访问(接在某个BANK上) 。S5PV210一共可接(0~5)共6个BANK,也就是6个SRAM/ROM。起始地址为BANKn的基地址(SROM_BANKn)。
x210使用16bit SROM接口接入DM9000。网线中有8根线,但有效数据线只有4根,另外4根为GND抗干扰线,四根线为(TX+/TX-)(RX+RX-)为差分信号。
网卡芯片上的CS引脚(chip selet)片选信号,主机向CS发送有效信息,则从机进行工作,否则从机不工作。CS高电平有效,低电平无效。
CS接在SOC片选信号引脚,在SROM BANK中有多个片选引脚CSn。x210将DM9000接在CS1上对应SROM_BANK1基地址为0x88000000。
CMD引脚接在SOC的ADDR2上。DM9000只有数据线没有地址线,是地址线与数据线进行复用(DATA0~15)。CMD高电平时为DATA,CMD为低电平时为index索引(地址+偏移量)。电平的高低由控制器进行改变,只需对寄存器进行正确的配置就能控制。
在linux驱动中,数据和代码是分开的,在DM9000中,驱动主要是代码,数据由开发板的接线方式决定。
DM9000依赖于init_sequences进行初始化。
start_armbootinit_sequenceboard_initdm9000_pre_init
SROM_BW_REG寄存器,用4个bit位去描述一个BANK,三星接在bit20~23就是BANK5,在X210接在BANK1,描述位为bit4~7。(注意半字对齐)
DM9000_DATA宏是发送数据的,DM9000_IO宏是发索引的,CONFIG_DM9000_BASE是网卡通过SROMBANK映射到SOC空间地址,不同BANK地址不同。
X210中ADDR2接在CMD上,因为ADD2是ADDRn的第三根线,所以CONFIG_DM9000(BASE)+4=DM9000_DATA。
X210接在BANK1,所以BASE为0x88000000,但DM9000因为型号问题,存在0x300的偏移量所以BASE为0x88000300。
在linux中有线网卡叫eth n。无线网卡叫wlan n。
linux系统下,网卡使用socket接口(API)进行上网,linux系统下的应用就通过这个socket实现上网,socket内部调用网卡驱动达到上网的目的。(linux->socket->驱动)。对于系统来说,驱动是隐形的。应用层的编写针对驱动是隐形的,驱动编写针对的是Linux框架(分离思想)。
uboot本身是裸机程序,不进行分层,没有驱动和应用的概念。在uboot中ping命令调用了驱动,ping的原理:向目标发包,cheak是否有反应。
do_pingNet Loopping startping sendARPRequest ARP协议(一种地址解析方式)发送 eth_send()接受 eth_rx()
#define CONFIG_SETUP_MEMORY_TAGS保证uboot给内核传参可以传递内存信息。
#define CONFIG_CMDLINE_TAG传递uboot bootargs给内核做启动信息。