| Hymod Board Database | |
| (C) Copyright 2001 | |
| Murray Jensen <Murray.Jensen@csiro.au> | |
| CSIRO Manufacturing Science and Technology, Preston Lab | |
| 25-Jun-01 | |
| This stuff is a set of PHP/MySQL scripts to implement a custom board | |
| database. It will need *extensive* hacking to modify it to keep the | |
| information about your custom boards that you want, however it is a good | |
| starting point. | |
| How it is used: | |
| 1. a board has gone through all the hardware testing etc and is | |
| ready to have the flash programmed for the first time - first you | |
| go to a web page and fill in information about the board in a form | |
| to register it in a database | |
| 2. the web stuff allocates a (unique) serial number and (optionally) | |
| a (locally administered) ethernet address and stores the information | |
| in a database using the serial number as the key (can do whole | |
| batches of boards in one go and/or use a previously registered board | |
| as defaults for the new board(s)) | |
| 3. it then creates a file in the tftp area of a server somewhere | |
| containing the board information in a simple text format (one | |
| per serial number) | |
| 4. all hymod boards have an i2c eeprom, and when U-Boot sees that | |
| the eeprom is unitialised, it prompts for a serial number and | |
| ethernet address (if not set), then transfers the file created | |
| in step 3 from the server and initialises the eeprom from its | |
| contents | |
| What this means is you can't boot the board until you have allocated a serial | |
| number, but you don't have to type it all twice - you do it once on the web | |
| and the board then finds the info it needs to initialise its eeprom. The | |
| other side of the coin is the reading of the eeprom and how it gets passed | |
| to Linux (or another O/S). | |
| To see how this is all done for the hymod boards look at the code in the | |
| "board/hymod" directory and in the file "include/asm/hymod.h". Hymod boards | |
| can have a mezzanine card which also have an eeprom that needs allocating, | |
| the same process is used for these as well - just a different i2c address. | |
| Other forms provide the following functions: | |
| - browsing the board database | |
| - editing board information (one at a time) | |
| - maintaining/browsing a (simple) per board event log | |
| You will need: MySQL (I use version 3.23.7-alpha), PHP4 (with MySQL | |
| support enabled) and a web server (I use Apache 1.3.x). | |
| I originally started by using phpMyBuilder (http://kyber.dk/phpMyBuilder) | |
| but it soon got far more complicated than that could handle (but I left | |
| the copyright messages in there anyway). Most of the code resides in the | |
| common defs.php file, which shouldn't need much alteration - all the work | |
| will be in shaping the front-end php files to your liking. | |
| Here's a quick summary of what needs doing to use it for your boards: | |
| 1. get phpMyAdmin (http://phpwizard.net/projects/phpMyAdmin/) - it's an | |
| invaluable tool for this sort of stuff (this step is optional of course) | |
| 2. edit "bddb.css" to your taste, if you could be bothered - I have no | |
| idea what is in there or what it does - I copied it from somewhere else | |
| ("user.css" from the phpMyEdit (http://phpmyedit.sourcerforge.net) package, | |
| I think) - I figure one day I'll see what sort of things I can change | |
| in there. | |
| 3. create a mysql database - call it whatever you like | |
| 4. edit "create_tables.sql" and modify the "boards" table schema to | |
| reflect the information you want to keep about your boards. It may or | |
| may not be easier to do this and the next step in phpMyAdmin. Check out | |
| the MySQL documentation at http://www.mysql.com/doc/ in particular the | |
| column types at http://www.mysql.com/doc/C/o/Column_types.html - Note | |
| there is only support for a few data types: | |
| int - presented as an html text input | |
| char/text - presented as an html text input | |
| date - presented as an html text input | |
| enum - presented as an html radio input | |
| I also have what I call "enum_multi" which is a set of enums with the | |
| same name, but suffixed with a number e.g. fred0, fred1, fred2. These | |
| are presented as a number of html select's with a single label "fred" | |
| this is useful for board characteristics that have multiple items of | |
| the same type e.g. multiple banks of sdram. | |
| 5. use the "create_tables.sql" file to create the "boards" table in the | |
| database e.g. mysql dbname < create_tables.sql | |
| 6. create a user and password for the web server to log into the MySQL | |
| database with; give this user select, insert and update privileges | |
| to the database created in 3 (and delete, if you want the "delete" | |
| functions in the edit forms to work- I have this turned off). phpMyAdmin | |
| helps in this step. | |
| 7. edit "config.php" and set the variables: $mysql_user, $mysql_pw, $mysql_db, | |
| $bddb_cfgdir and $bddb_label - keep the contents of this file secret - it | |
| contains the web servers username and password (the three $mysql_* vars | |
| are set from the previous step) | |
| 8. edit "defs.php" and a. adjust the various enum value arrays and b. edit | |
| the function "pg_foot()" to remove my email address :-) | |
| 9. do major hacking on the following files: browse.php, doedit.php, donew.php, | |
| edit.php and new.php to reflect your database schema - fortunately the | |
| hacking is fairly straight-forward, but it is boring and time-consuming. | |
| These notes were written rather hastily - if you find any obvious problems | |
| please let me know. |