การใช้งาน H8 กับ Ethernet Controller

AKI-H8/3069LANマイコンボードキット เป็นชื่อของ board ที่ซื้อมาลองเล่นครับ


ทีแรกตัดสินใจอยู่พักใหญ่ ไม่รู้ว่าจะเริ่มเล่นอะไรก่อนดี พอดีผมสนใจด้าน Network Programming เห็น broad นี้แล้วก็ชอบเลย ถูกตรังด้วย 3,750円
 

เริ่มต้นด้วยการลง OS ที่แถมมาด้วย ชื่อ
MES2.1(H8/OS 6.1) ผมเข้าใจว่ามันถูกออกแบบมา โดยมี code อีกส่วนอยู่ใน 1024-Bit Serial EPROM ที่ออกแบบให้ทำงานร่วมกับ RTL8019AS Realtek Full-Duplex Ethernet Controller มันทำให้ใช้งานได้ง่ายมากๆ แต่ไม่รู้ว่าจะพัฒนาต่อเองได้หรือไม
การลง OS ก็ไม่ได้ยาก ใช้คำสั่ง h8write.exe ที่มีมาให้ และไฟล์ plus3068.mot ก่อนจ่ายไฟเข้า board ต้องระวังมากๆ เพราะไม่มีระบบป้องกันเหมือน board เมื่องไทย(ชุดคิดก่อนใช้จริงๆ) หลังจากนั้นก็ให้ปรับ dip switch SW1 ตามคู่มือครับ 1 ON, 2 ON, 3 OFF, 4 ON สำหรับการเขียนลง flash rom ภายใน h8 (ROM512kByte、RAM16kByte) โดยการเขียนผ่านทาง RS232 สำหรับใครที่ใช้ USB to rs232 ก็ให้แก้ให้ตรงกับ com prot ที่ใช้ครับ
ครั้งแรกผมไม่สามารถรันได้ เพราะปัญหาตัวนี้ล่ะ จากนั้นก็ใช้คำสั่งตามนี้ครับ
c:\> h8write.exe -3069 -f20 plus3068.mot
comport



จากนั้นปรับ dip switch SW1 เป็น run mode > 1 ON, 2 OFF, 3 ON, 4 OFF
แล้วใช้โปรแกรม hyper terminal โดยตั้งค่าต่างๆตานี้ครับ
Port :COM1 Baud Rate:57600 Data :8 bit Parity :none Stop :1 bit Flow control :hardware
สำหรับใครที่มี tools ที่ชอบอยู่แล้วก็ใช้ตัวนั้นล่ะ ส่วนครับชอบใช้ RS-Terminal แล้วทำการ open port ค้างไว้ เมื่อ Board โดน reset จะเริ่มต้นใหม่ และส่งหน้าจอ monitor แสดงออกมา ถ้าเป็นตามนี้ก็ ok ครับ


ขั้นตอนต่อไปคือการ upload html code ที่ได้แถมใน cd ตาม path นี้เลยครับ \h8_os\httpprog\http.mot โดยใช้โปรแกรม put.exe เป็นตัว upload data
แล้วใช้คำสั่งตามนี้ครับ

C:\>put.exe http.mot

ตรงนี้ผมเจอปัญหาเดิมครับ คำสั่ง put มันไม่สามารถแก้ค่า comport ได้ครับ แต่มีวิธีครับ ก็แก้ไขค่าของ usb2rs232 ให้มันไปใช้ com1 ก็จบแล้วครับ ถ้าทำแต่แรกก็ไม่มีปัญหาแล้วครับ(แก้ใน device manager ครับไม่ยากครับ ออลืมบอกไป ผมใช้ windows xp sp2 ,notebook ibm r51e ซื้อที่ไทย) แล้วจะมีข้อความตามนี้ครับ


ตอนนี้ก็สามารถใช้งาน ผ่าน ethernet ได้แล้วครับ
ip: 192.168.0.145 เมื่อต่อสาย lan ไฟ link จะติดแสดงว่า ok



แล้วเราก็สั่งให้ cpu ไปรันคำสั่งในตำแหน่งที่ upload code ไว้ โดยสั่งผ่าน program monitor
H8/OS >exec ffde40 enter


ทดลองเรียกผ่าน ie หรือ firefox [url] http://192.168.0.145
แล้วจะมี page แสดงขึ้นมา แต่ข้อมูลภายในไม่ถูกต้อง เดี๋ยวเราจะเข้าไปแก้กันครับ



ก่อนอื่นก็ต้องแก้ไขที่ file ชื่อ http.c เป็นตามด้านล่างครับ (มากับ CD)
ผมแก้เบอร์ของ chip เป็นH8-3069F และเปลี่ยน ip เป็น 192.168.0.120
------------------------------------------------------------
/* http sample program */
#include
#include
#include
int http_recv(int flag, int sock, struct sockaddr_in *addr) {
char buffer[512]; char com[8], name[32], ver[16], *ptr1, *ptr2; int n;
switch(flag) {
case TCP_DATA:
n = tcp_read(buffer, 512);
ptr1 = buffer;
ptr2 = strchr(buffer, ' ');
*ptr2 = 0;
strcpy(com, ptr1);
ptr1 = ptr2 + 1;
ptr2 = strchr(ptr1, ' ');
*ptr2 = 0;
strcpy(name, ptr1);
ptr1 = ptr2 + 1;
ptr2 = strchr(ptr1, '\r');
*ptr2 = 0; strcpy(ver, ptr1);
strcpy(buffer, ver);
n = strlen(buffer);
strcpy(buffer + n, " 200 Document follows\n");
n = strlen(buffer);
strcpy(buffer + n, "Server: H8/OS H8-3069F\n");
n += strlen(buffer + n);
strcpy(buffer + n, "Content-length: 78\n\n");
n += strlen(buffer + n);
strcpy(buffer + n, " <h1>Welcome to H8/OS H8-3069F<\h1><p>http is enable!\n\n");
n += strlen(buffer + n);
strcpy(buffer + n, "

yatta.");
n += strlen(buffer + n);
tcp_write(sock, buffer, n);
break;
}
return 0;
}
int tcp(unsigned short port, struct sockaddr_in *addr, unsigned char flag, int seq) {
int sock;
if(port != 80) return -1;
if(flag & RST) return -1;
if(!(flag & SYN)) return -1;
sock = tcpsocket(seq, http_recv);
return 0;
}
int main(void) {
ether_init(0x200000);
if(get_ether_status() == 0) return -1;
ip_setup(IPADDR(192,168,0,120),
IPADDR(255,255,255,0));
tcp_regport(tcp);
while(1);
}
---------------------------------------------------------------

ก่อนอื่นให้ทำการลง cygwin เพราะเราจะใช้ gcc เป็นตัว complie
cygwin download ได้ที่ http://cygwin

เปิด cygwin แล้วเรียกคำสั่ง (ใน directory ที่มีไฟล์ Makefile)
$ make
ใน CD ได้ทำ Makefile มาให้แล้วครับ


เมื่อไม่พบ error ใดๆ ให้กลับไปทำขั้นตอนเดิมตั้งแต่คำสั่ง
put "C:\>put.exe http.mot " ใหม่อีกครั้งครับ
แล้วก็จะได้ตามที่เราต้องการ

อ้างอิง:http://hijiri3.s65.xrea.com/sorekore/develop/h8/01_redboot.htm

Comments