Page is in English and describes my achievements until now. Hope to get feedback from around the globe, therefore in english. Mail comments to wifimaarten aaattt hotmail.com or add it yourself, its a wiki site! Don't complain about spelling and grammar (correct that yourself). My goal when writing was to share some information quickly.
Introduction
The Benq AWL500 is an Access Point. Unfortunatly it works only in managed mode so I decided to try to get a bit more out of the box. Running ucLinux should be possible.
Links
Links that inspired me http://sourceforge.net/projects/samsung-uclinux/,
http://opensource.instant802.com/,
http://linuxap.ksmith.com,
http://www.ucrouter.ru/english/ and
http://www.armlinux.net/Kor/solution/vls_4510_ap.htm.
Other interesting links:
http://seattlewireless.net/index.cgi/SamSung4510
http://reseaucitoyen.be/index.php?samsung4510
My goal
Getting ucLinux running on this wireless AP to extend the capabilities
Mainboard hardware and modifications
If you lift the hood you find a nice PCB:
CPU |
S3C4510B |
ARM7DTMI |
|
|
SDRAM |
16 M-BIT Hynix |
HY57V16160DTC-7 |
143 MHz, 2Banks x 512Kbits x 16, LVTTL |
|
Flash Mem. |
8M-BIT |
29LV800BTC-90 |
1M x 8/512K x 16 CMOS SINGLE VOLTAGE |
|
Ethernet |
Realtek RTL8201L |
|
|
|
Wifi |
PCMCIA Card |
Benq AWL100 with external antenna |
|
|
http://www.fcc.gov/oet/fccid/ has all PCB design drawings. FCCID: jwp , Equipment Product Code: awl500 .
Q. Are you sure that the FCCID is right? I can't find it on the FCC ID search page.
A: Yes, at the bottom of this page http://www.fcc.gov/oet/fccid/help.html fill the field of Examples 'jvp' (where it now says AA0] and at the second 'awl500'.
Further we find a 14 pin JTAG header preparation, a pre-soldered footprint for a MAX3244 and 9P-SUBD preparation.
Some overview pictures of the board
PCMCIA
Tested the card in laptop and it is AWL100 with external antenna. See also page PcmCia for linux instructions on the AWL100.
Antenna connector is accordign the specs a Hirose connector but the connector in my box says IPX. IPX is made by http://www.i-pex.co.jp/ and extremly similar to http://www.Hirose.de U.FL series connector. I-pex calls it MHF. Pigtail plus connector can be bought at http://www.Farnell.com/nl art.no. 3910659 only 5.29 euro. Or at http://www.netgate.com/product_pigtails.html.
JTAG interface
Hardware JTAG interface
If fitted a 14 pin header (drill the holes with a 1 mm drill and gently solder the header).
Top and bottom view of header on board
Initially I built a parallel port interface from http://jtag-arm9.sourceforge.net/hardware.html. I modified it to match this design: http://bh.udev.org/filez/wireless/samsung4510/pasteleurs/ but did not try it yet. I changed the header connections (20 <> 14 pin) to:
PL2/4,6,8,10,12,14,16,18,20 |
PL2/2,4,6,8,10,14 |
PL2/1,2 |
PL2/1 |
PL2/5 |
PL2/5 |
PL2/7 |
PL2/7 |
PL2/9 |
PL2/9 |
PL2/13 |
PL2/11 |
14 Pin JTAG is:
1 |
Vcc |
2 |
GND |
3 |
nTRST |
4 |
GND |
5 |
TDI |
6 |
GND |
7 |
TMS |
8 |
GND |
9 |
TCK |
10 |
GND |
11 |
TDO |
12 |
nRESET |
13 |
Vcc |
14 |
GND |
From the origianl design I replaced the AC244, which was hard to get, for a 74HCT244N which works fine with the same pinout.
The nRESET circuit is modified: Instead of the DTC114 part I used a BC337 (-25) and because I ran out of resistors I used a 100k resistor instead of the 47k. Also did I connect PL2/15 to PL2/3 because 2/15 is not connected on the PCB.
I tested the interface with Macraigor Systems OCD Demon Flash Programmer and it works! I can read, don't dare to write yet. I am further focussing on using opensource software, see below.
The JTAG parallel port interface
Software JTAG interface
I tried the jtag linux software at http://openwince.sf.net/jtag. It could replace the windoze Flash Programmer ... Start jtag and load the jtag cable that you've:
jtag> cable parallel 0x378 WIGGLER
jtag> detect
I was a bit succesfull. 'detect' returns:
IR length: 4
Chain length: 1
Device ID: 00011111000011110000111100001111
Unknown manufacturer!
Chain.c(110) part 0 without active instruction
Chain.c(133) part 0 without active instruction
Chain.c(110) part 0 without active instruction
Unknown manufacturer is correct (see [openwince.sourcefore.net/] lists).
But if I do:
'jtag> include samsung/s3c4510b/s3c4510b'
and I try to read memory e.g.:
'jtag> peek 0x0080'
I get some value. If I try again (other address or the same) the AWL500 sort of hangs, the WLAN led goes off and I get the same value for every address I try.
I need to check the nTRST circuit. I did check the functioning of the nTRST pin by setting pin 2 of the 25 p SUBD high for 200u seconds; this did reset the AWL500 completly. Maybe timings are critical since I did use not exactly the same parts (100k<>47k). Also, http://seattlewireless.net/index.cgi/SamSung4510 reports the arm9 circuit is buggy. Also there is a patch I have not yet applied at the openwince project pages.
Serial port
From the fcc scheme's and careful inspection (U806)) I found MAX3244 from http://www.maxim-ic.com could do the serial port job. I got hold of a SSOP MAX3244CAI chip, soldered it with a tiny, tiny tip. A great help was the pre-soldering of the PCB; no extra solder needed.
Close up of MAX3244 on board and SUBD connector
Finally I fitted a 9P SUBD. When I powered the AP I did not see any activity on my serial port though I verified there was 3.3V on the MAX3244. I see these options:
- I burned the MAX3244
- I did not solder well enough
- The firmware doesn't initialize the serial port
4. One (or two) of the required Capacitors for the charge bridge are not in place ?
S3C4510B
On the PCB R216 and R217 are not present. Because of absence of these the S3C4510B is in Big Endian. It could be an option to fit the board at R216 with a 10k resistor to see if Little Endian works. Little Endian appears to be used more frequently, at least at Samsung ucLinux pages. A first try fitting the board with a 10k resistor did not work out, reading and writing data from flash was no longer possible. I removed the 10k resistor and will start setting up a big endian development environment.
Software
This will be the most difficult part; I don't know much about microprocessors and because this board is not a development board. So, I don't know what kind of bootloader is used. Actually, I am not even sure if I need a bootloader.
Registers
According to the User Manual the s3c4510b has 16 System Manager registers. They might tell me a bit more about the configuration. The expected binary value is ordered from bit 31 to bit 0.
Registers |
Hex Value |
Binary |
Expected Binary |
SYSCFG |
0x270C80E2 |
0010 0111 0000 1100 1000 0000 1110 0010 |
1110 01xx xxxx xxxx xxxx xxxx xxxx xxxx xxx0 |
CLKCON |
0x3500000A |
0011 0101 0000 0000 0000 0000 0000 1010 |
0xxx .... |
EXTACON0 |
0x01CA46E2 |
0000 0001 1100 1010 0100 0110 1110 0010 |
... |
EXTDBWTH |
0x010000EA |
0000 0001 0000 0000 0000 0000 1110 1010 |
... xxx1 1xxx |
Known values are:
- SYSCFG bit 31;1 S-DRAM Module, bit 30:26;11001 Product ID S3C4510B , bit 0;0 defined 0
- CLKCON bit 31;0 defined 0
- ROMCON0 bit 5:4;11, because BOSIZE[1:0]=11, means databuswidth 32 bit for rom bank 0
Cross Compiling for arm
You can install a complete cross-compiling toolchain for this samsung 4510. You need to install the following things:
- binutils:
- arm-linux-gcc:
- arm-elf-gcc:
- etc... to be continued....