forked from oleg-it-com/walkgeek
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME
153 lines (107 loc) · 6.22 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
= About walkgeek ===============================================================
This is walkgeek, another portable music player based upon STM32F4-Discovery
board hardware, which contains STM32F407VGT6 microcontroller and CS43L22 audio
codec. For now, it can play MP3 and Opus files.
The goal of this project is to create a fully functional yet very simple
portable player, optimized for easy navigation across a lot of pretty long audio
files (podcasts).
= Hardware =====================================================================
There are 2 pretty similar HW platforms supported (or rather variations of a
one platform) called N1100 and F4DISCOVERY.
--- F4DISCOVERY ----------------------------------------------------------------
This platform is represented by STM32F4-Discovery board. It gives you an easy
way to try out and develop walkgeek. No HW modifications are necessary in a very
basic case. You only need to put some audio files supported by walkgeek on a USB
Flash drive and attach in to the USB Micro connector (CN5). User interface is
limited to a on-board "User" button which acts as button "3", and 4 leds:
- Red means no Flash drive connected;
- Green means Flash drive has enumerated and Player is started;
- Orange means Player is stopped or loading current track;
- Blue (blinking) means Player is playing current track.
--- N1100 ----------------------------------------------------------------------
There is also a more portable HW version that fits into Nokia 1100 cell phone
case. Design resources for it are also available in a pcb/ directory of this
project in EAGLE CAD format.
= Software =====================================================================
1. Checkout the latest version of the source code by following the instructions
here: http://code.google.com/p/walkgeek/source/checkout
2. In order to build the source code, you need:
- Git
- CMake of a version of 2.8.4 or higher.
- ARM GNU Toolchain: CodeSourcery, Linaro, etc.
3. You probably will find useful to have openocd as a gdb server which supports
many cheap JTAG probes, including STLink v2 which is found in all the
Discovery boards by ST.
= Example steps for Linux-based desktop ========================================
1. Checkout latest version of player's source code.
$ git clone
2. It seems that CMake doesn't like embedded arm gnu toolchains (which is the
case for at least CodeSourcery and Linaro on Ubuntu GNU/Linux) and shows
errors at the project configure stage. You may solve them by typing:
$ cd walkgeek
$ sudo ./patch_cmake.sh
Dollar sign stands for command line prompt, do not type it.
Please note that on OS other than GNU/Linux it may be different file or even
may be unnecessary. Probably there is more proper way but this one has worked
for me.
3. You should be at this moment in walkgeek directory. Type:
$ mkdir Build
$ cd Build
4. Next step is to invoke cmake in order to generate Makefiles. You can specify
a list of parameters where syntax for each item is -D%param_name%=%param_value%.
Among other standard cmake parameters, you can specify:
- TOOLCHAIN_PREFIX -- full path to the root directory of your toolchain.
Default is $ENV{HOME}/Local/gcc-arm-none-eabi-4_6-2012q2
- TARGET_TRIPLET -- prefic for toolchain programs, default is arm-none-eabi.
- STM32_USBLib_DIR -- full path to the STM32 USB Host Device Lib.
Default is ${CMAKE_SOURCE_DIR}/bsp/3rd_party/STM32_USB-Host-Device_Lib_V2.1.0
- CMAKE_BUILD_TYPE -- Release or Debug or others (please refer to the CMake
documentation). Default is Debug.
- PLATFORM -- choose one of the supported HW platforms: N1100, F4DISCOVERY,
SIMULATOR (see below). Default is N1100.
- PROFILING -- enable measurement of the CPU consumption of the audio codecs.
1 enables, 0 disables. Default is 0.
- ENABLE_TRACE -- enable trace() functions output via USB CDC. Default is 0.
- USE_MP3 -- enable MP3 support. Default is 0.
- RPROG_OHM -- if your platform is N1100, this is the value of resistor
which sets LTC4054 charge current. Default is 2000.
- SD_CARD_FILE -- if your platform is SIMULATOR, enter a full path to the
file which contains FAT file system. See below for details. No default here.
So if your toolchain and paths are the same, you don't need to specify all of
them. In this example the default values are passed explicitly.
$ cmake -DTOOLCHAIN_PREFIX=/home/oleg/Local/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI \
-DUSE_MP3=1 ../ -G"Unix Makefiles"
$ make
Now you can build .hex, .bin or .dis (disassembly) files
$ make walkgeek.hex
My Ubuntu even auto-completes Makefile targets.
6. (Optional) You can also debug it. Open one console, cd to the walkgeek's
source root dir and
$ openocd -f openocd_luminary.cfg
Switch to another console, cd to the walkgeek's source root dir and
$ arm-none-eabi-gdb --quiet --tui -x debug.gdb
= SIMULATOR ====================================================================
There's a way to launch walkgeek on your PC (currently only POSIX OS'es are
supported, at least GNU/Linux). PCM Audio output is not yet implemented.
But console IO works and keyboard is simulated via stdin (just press a key
and hit enter). If you press a number of keys and press enter, each of them
will be handled consequently. Also, SD card IO simulation works, so that
FAT FS module of walkgeek sees no difference compared to real HW. The idea is
to manually create a file of some MB of a size, create FAT FS inside it
(just like if it were an SD card), mount it, put some audio or whatever files
in it and feed it to walkgeek application.
1. To do it, first create a file (this example will create a
bs*count=128 MB file)
$ dd if=/dev/zero of=sd_card.bin bs=1024 count=131072
2. Make FAT FS here
$ /sbin/mkdosfs -F 16 sd_card.bin
3. Mount it
$ mkdir fatmount
$ sudo mount -t vfat -o umask=0000 -o loop sd_card.bin fatmount
4. Put some files into fatmount/ dir.
5. Unmount it in order to drain write buffers.
$ sudo umount fatmount
6. When launching CMake (see above), choose -DPLATFORM=SIMULATOR -D%path-to%/sd_card.bin
This is a good way to debug higher-level algorithms (for example, Navigator
module was tested that way).
Thank you for your attention.