-
Notifications
You must be signed in to change notification settings - Fork 19
/
README
350 lines (304 loc) · 12 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
+----------------------------------------------------------------------------+
| Welcome to Utils for U-Boot Utilities for OMAP! |
+----------------------------------------------------------------------------+
========
Dated 27 Aug 2008 - Nishanth Menon
========
+----------------------------------------------------------------------------+
Table of Contents:
=================
0) CAVEATS
1) COMPILATION Environment
2) COMPILING the code
3) pserial help
4) ukermit help
5) ucmd help
6) pusb help
7) gpsign help
8) Generic Example of usage
9) Files and Directories
10) Credits
+----------------------------------------------------------------------------+
IMPORTANT NOTE: This document is meant for folks who dont have generated
documentation and need to see how it all works. However, this doc does get
outdated pretty fast.. so take this as a generic directions.
if you would like the latest. do a 'make docs' and look at
documentation in docs/html/index.html file
0) CAVEATS
==========
Before using any tools, I would love to know it's limitations, hence the
section 0 ;). some of the known caveats at the time of writing are:
a) pusb does not yet work on windows. This is still a work in progress
b) ukermit is cranky when used with large packets - it is disabled at the moment
c) pserial can be used with most usb->rs232 adapters, however CH431 based
adapters are not support due to the fact that the linux kernel driver for
the CH341 does not support even parity.
1) COMPILATION Environment:
===========================
To get documentation run 'make docs'. You need doxygen and graphviz in your path
for this to work. Documentation generation has been tried in linux only.
Linux:
------
A) Get the Environment:
----------------------
Based on which ever distribution you have, you would need gcc, make,
binutils, libc
You could run "apt-get install gcc" or "yum install gcc" based on debian or
redhat distribution
NOTE: to make documentation, you'd need doxygen, graphviz, dot, latex,
pdflatex, makeindex and related packages
Windows:
-------
A)Get the Environment:
----------------------
NOTE: based on the speed of your internet connection and machine speed, these
steps could take quite a while.. So dont blame me ;). I have just tried these
on a 32 bit Windows XP machine, so no guarentees on 64 bit or Windows
Vista,2000,95 and whatever is around..
I) Compiler: http://www.mingw.org/
i) Download automated installer from:
http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=240780
ii) Select gcc from options provided to <compiler directory>
Example: C:\MinGW
<compiler directory> = C:\MingW
II) Get compilation environment: http://gnuwin32.sourceforge.net/
you can install individual packages from
http://gnuwin32.sourceforge.net/packages.html OR go for the entire package by
doing the following steps:
i) Run the getGNUWin32 application to download and install from:
http://sourceforge.net/project/showfiles.php?group_id=163416&package_id=184724
ii) Select the location to install the applications to <tmp directory>
Example: c:\gnuWinTemp
iii) Click on windows start->run "cmd"
iv) cd to C:\gnuWinTemp\GetGnuWin32\
v) If you have a net proxy to set, this would be the time to do it. e.g. for
http proxy(proxy.com) running on port 80, run:
set http_proxy=http://proxy.com:80
Note: NO QUOTES. Dont try 'set http_proxy="http://proxy.com:80"'.
Things are a bit brain dead and takes '"' as part of the variable.
vi) Setup the mirrors:
Example: set GNUWIN32_MIRROR="voxel umn unc"
(Yes with the '"'s)
Note: if you want to see the available mirrors run 'notepad readme.txt'
vii) Run the command "download" -> This will take a while all the apps are
pulled down, but, what the heck, you get all the apps :).
Note: if you do not desire to install all, read the readme.txt on how to
select the packages you'd need to install
viii) Run the command "install" -> This again could take a while
ix) now open a windows explorer window (windows key+e) and move the directory
<temp directory> to <app directory>. Example:
C:\gnuWinTemp\GetGnuWin32\gnuwin32 to c:\gnuwin32
directory c:\gnuWinTemp can now be deleted (if you would like to save some
disk space)
<app directory> = c:\gnuwin32
III) setup the environment variables
i) Right click on system and select "System Properties"
ii) Click on "Advanced" Tab
iii) Click on the "Environment Variable" button
iv) Add <app directory>\bin and <compiler directory>\bin to the Path
variable (it is in System variable).
Example: c:\gnuwin32\bin;C:\MinGW\bin
B) Additional params for building code for Windows
--------------------------------------------------
You can choose where the make,gcc are taken in windows compilation:
i) Using variables to compile
Example:
set COMPILER_PREFIX=C:\MingW\bin\
set APP_PREFIX=C:\gnuwin32\bin\
make
ii) Edit the Makefile and change the COMPILER_PREFIX and APP_PREFIX variables
to point to where the files are present.
To Compile code open a new command prompt by running "cmd" from start->run
cd to the code and do a make
2) COMPILING the code:
======================
* 'make docs' will generate the documentation.
* 'make' will compile all binaries except pusb
* 'make usb' will generate pusb as there is a dependency on libusb and OS
compiled on.
* 'make clean' and 'make distclean' will cleanup all temporary files as required.
By default, code builds in quiet mode, by setting variable V=1 during compile,
you can get detailed build steps:
Example: make V=1
NOTE: make docs requires graphviz, doxygen packages
3) pserial help
===============
This Application helps download a second file as response to ASIC ID over
serial port
Syntax:
------
./pserial -p portName -f fileToDownload
Where:
-----
portName - RS232 device being used. Example: Linux: /dev/ttyS0, Windows:
COM1,COM2 etc.
fileToDownload - file to be downloaded as response to asic id
Usage Example:
-------------
Linux: ./pserial -p /dev/ttyS0 -f ~/tmp/u-boot.bin
Windows: pserial -p COM1 -f z:\tmp\u-boot.bin
4) ukermit help
===============
This Application helps download a fileusing U-Boot's kermit protocol over
serial port
Syntax:
------
./ukermit -p portName -f fileToDownload [-d delay_time]
Where:
-----
portName - RS232 device being used. Example: Linux: /dev/ttyS0, Windows:
COM1,COM2 etc.
fileToDownload - file to be downloaded
delay_time - delay in ms b/w each packet transmission and ack
Usage Example:
-------------
Linux: ./ukermit -p /dev/ttyS0 -f ~/tmp/u-boot.bin
Windows: ukermit -p COM1 -f z:\tmp\u-boot.bin
5) ucmd help
============
This sends a command and expects a provided matching response from target
Syntax:
------
./ucmd -p portName -c "command to send" -e "Expect String"
Where:
-----
portName - RS232 device being used. Example: Linux: /dev/ttyS0, Windows:
COM1,COM2 etc.
command to send - Command to send to uboot
Expect string - String to expect from target - on match the
application returns
Usage Example:
-------------
Linux: ./ucmd -p /dev/ttyS0 -c "help" -e "U-Boot>"
Windows: ucmd -p COM1 -c "help" -e "U-Boot>"
6) pusb help
============
This Application helps download a second file as response to ASIC ID over USB
Syntax:
------
./pusb [-v] [-V] [-d device_ID] -f input_file
Where:
-----
-v : (optional) verbose messages
-V : (optional) verbose messages + usblib debug messages
-q : (optional) Ultra quiet - no outputs other than error
-d device_ID: (optional) USB Device id (Uses default of 0xD009)
-f input_file: input file to be transmitted to target
NOTE: it is required to run this program in sudo mode to get access at times
Usage Example:
Linux: sudo ./pusb -f u-boot.bin
7) gpsign help
==============
App description:
---------------
generates a formatted image which may be used for
nand, onenand or mmc boot on a OMAP GP device.
This can also add a configuration header which
allows for preconfiguration of various clock,ram
GPMC or MMC settings prior to the image starting.
Syntax:
-------
./gpsign [-c config file] [-l loadaddr] [-f input_file] [-?]
Where:
------
-c config_file: CH configuration file[Default none]
-l loadaddress: load address for result img[Default 0x40208800]
-f input_file: input binary to sign[Default x-load.bin]
-? : provide extended help including a sample config file
------
Usage Example:
All OS: gpsign
8) Generic Example of usage
===========================
The following example is using U-Boot-V2. But it is not restricted to just
that! My notes in [NOTE:] comments below
$ ./pserial -p /dev/ttyS1 -f ../u-serial.bin
[NOTE: this will wait for ASIC ID -> So I switch on/reset the board after
this]
Waiting For Device ASIC ID: Press Ctrl+C to stop
ASIC ID Detected.
Sending 2ndFile:
Downloading file: 100.000% completed(35108/35108 bytes)
File download completed.
$ ./ucmd -p /dev/ttyS1 -c "loadb -f /dev/ram0" -e 'bps...'
[NOTE: run the loadb command to load to memory.. loadb command ends with bps..
to show it is waiting for a file to be send from host]
Output:
loadb -f /dev/ram0
## Ready for binary (kermit) download to 0x00000000 offset on /dev/ram0 device
at 115200 bps...
Match Found. Operation completed!
$ ./ukermit -p /dev/ttyS1 -f ../u-serial.bin
[NOTE: use ukermit to download the file to the target]
Downloading file: 100.000% completed(35108/35108 bytes)
File Download completed
$ ./ucmd -p /dev/ttyS1 -c "go 0x80000000" -e "X-load 343x>"
[NOTE: we just execute the file which was downloaded]
Output:
go 0x80000000
## Starting application at 0x80.0.0-rc5-git (Aug 21 2008 - 11:22:15)
Board: Texas Instrument's SDP343x
Malloc space: 0x87bfff10 -> 0x87ffff10 (size 4 MB)
Stack space : 0x87bf7f10 -> 0x87bfff10 (size 32 kB)
running /env/bin/init...
not found
X-load 343x>
Match Found. Operation completed!
[NOTE: you could embedd these in script files to automate commonly used
operations such as flashing an image etc.. and ease up things a lot more]
9) Files and Directories
========================
. (Source Root. All final executables are generated here)
|-- COPYING (Copy Right file ->READ THIS)
|-- README (This file)
|-- configs (Sample configuration files for boards)
| |-- sample-3630.cfg - sample omap3630 file (example zoom3)
| `-- sample.cfg
|-- docs (documentation Directory)
| |-- c1_s1_main.dox
| |-- c2_s1_caveat.dox
| |-- c3_s1_apps.dox
| |-- c3_s2_app_pserial.dox
| |-- c3_s3_app_pusb.dox
| |-- c3_s4_app_ukermit.dox
| |-- c3_s5_app_ucmd.dox
| |-- c4_s1_compile.dox
| |-- c5_s1_library.dox
| `-- doxyfile
< `--html/index.html -> This is root html file when we generate docs>
< `--html/index.hhc -> This is root hhc project file for generating chm>
< `--latex/refman.pdf -> This is the final pdf when we generate docs>
|-- include (common headers for libraries)
| |-- file.h
| |-- f_status.h
| |-- rev.h
| `-- serial.h
|-- lib (libraries used by apps)
| |-- file_posix.c (Linux/Mac OS/posix compilant file ops)
| |-- file_win32.c (Windows file ops)
| |-- f_status.c (show off status of operations)
| |-- lcfg (liblcfg library for configuration file handling)
| | |-- README
| | |-- lcfg_static.c
| | `-- lcfg_static.h
| |-- serial_posix.c (Linux/Mac OS/posix Serial port ops)
| `-- serial_win32.c (Windows Serial port ops)
|-- makefile (make file for build)
`-- src (app source directory)
|-- gpserial.c (gpserial source)
|-- pserial.c (pserial source)
|-- ucmd.c (ucmd source)
|-- pusb.c (pusb source)
`-- ukermit.c (ukermit source)
6 directories, 33 files
10) Credits
========================
At the start of writing this code, there was no git, no svn, just zip files,
so a couple of honorable mentions at this time:
Dirk Behme - general directions and initial usb discussion as here:
http://groups.google.com/group/beagleboard/browse_thread/thread/ae2c601ebe104a4
pusb is a scratch write but in general uses the same concepts
Rob Clark - Mac OS support, tons of cleanups in serial code, and in general a
willing experimenter with new ideas :)
Paul Baecher for writing liblcfg: http://liblcfg.carnivore.it/ - I recommend it
to anyone looking for a quiet simple config file handling parser