forked from linux4sam/at91bootstrap
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME.txt
271 lines (190 loc) · 8.67 KB
/
README.txt
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
# AT91Bootstrap Project
AT91Bootstrap is the 2nd level bootloader for Microchip microprocessors (aka AT91).
It providing a set of algorithms to manage the hardware initialization such as
clock speed configuration, PIO settings, DRAM initialization, to download your
main application from specified boot media: NAND FLASH, serial FLASH (both
AT25-compatible of DataFlash), serial EEPROM, SD Card, etc. to main memory and
to start it.
1 Host Setup
================================================================================
## 1.1 Linux Host Requirements
Refer to the GNU ARM Toolchain section below for toolchain recommendations.
## 1.2 Windows Host Setup
### 1.2.1 Install required tools
A toolchain such as GNU Tools for Arm Embedded Processors shall be provided.
Get one from e.g. <https://developer.arm.com/open-source/gnu-toolchain/gnu-rm>.
Run the installation wizard and specify a destination folder whose full path is
free from any whitespace.
Further instructions below are written as if the toolchain had been installed
to C:\opt\gnu_tools_arm\7-2018-q2.
Building AT91Bootstrap requires a POSIX environment. Several tools are available
on the market to provide such an environment. In these instructions we rely on
Minimal SYStem 2 (MSYS2).
Get MSYS2 from <http://www.msys2.org>.
Install it. The installation wizard ask for the installation folder, and
suggests to keep its full path short.
Further instructions below are written as if MSYS2 had been installed to
C:\opt\msys.
MSYS2 notably provides a minimal Bourne Shell, named mintty.
Launch mintty in the "MSYS2 MSYS" configuration: either search for the
"MSYS2 MSYS" shortcut in the Program menu, or invoke the Run dialog
('Windows' and 'R' key combination) and enter the following command at the Open
prompt:
C:\opt\msys\msys2_shell.cmd -msys
In this terminal, whose prompt is suffixed with "MSYS", request the package
manager to update both its database and the packages already installed:
$ pacman -Syuu
Still at the "MSYS" prompt, install additional packages that we will need later
on when building AT91Bootstrap:
$ pacman -S bc gawk gcc git make python2 tar
$ cd /usr/bin
$ ln -s python2.exe python.exe && ln -s python2-config python-config
Finally, close the "MSYS2 MSYS" terminal window.
### 1.2.2 Open a shell suitable for building AT91Bootstrap
Launch mintty in the "MSYS2 MinGW 64-bit" configuration: either search for the
"MSYS2 MinGW 64-bit" shortcut in the Program menu, or invoke the Run dialog
('Windows' and 'R' key combination) and enter the following command at the Open
prompt:
C:\opt\msys\msys2_shell.cmd -mingw64
In this terminal, whose prompt is suffixed with "MINGW64", configure environment
variables:
$ export CROSS_COMPILE="arm-none-eabi-"
$ export PATH=/c/opt/gnu_tools_arm/7-2018-q2/bin:$PATH
Still at the "MINGW64" prompt, proceed with instructions given in the Compile
AT91Bootstrap section below.
2 GNU ARM Toolchain
================================================================================
AT91Bootstrap has been compiled and tested under Linux using the following GNU
ARM Toolchain:
- gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
- gcc version 4.7.3 (Sourcery CodeBench Lite 2013.05-24)
- gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1)
- gcc version 4.8.3 (Sourcery CodeBench Lite 2014.05-29)
- gcc version 4.9.3 (Linaro GCC 2014.11)
- gcc version 5.1.1 (Linaro GCC 5.1-2015.08)
- gcc version 7.2.1 (Linaro GCC 7.2-2017.11)
- gcc version 7.3.1 (Linaro GCC 7.2-2018.05)
- gcc version 8.2.0 (Ubuntu 8.2.0-7ubuntu1)
WARNING: check KNOWN_ISSUES for issues with older gcc versions. We recommend
using a toolchain newer than 6.0.
3 Compile AT91Bootstrap
================================================================================
## 3.1 Compile DataFlashBoot
Let's use at91sam9x5ek as an example.
### 3.1.1 Compile booting u-boot image from DataFlash
$ cd <project directory>
$ make mrproper
$ make at91sam9x5ekdf_uboot_defconfig
$ make
If the building process is successful, the final .bin image can be found under
binaries/
### 3.1.2 Compile booting kernel image from DataFlash
$ cd <project directory>
$ make mrproper
$ make at91sam9x5ekdf_linux_defconfig
$ make
If the building process is successful, the final .bin image can be found under
binaries/
### 3.1.3 Compile booting kernel & dt image from DataFlash
$ cd <project directory>
$ make mrproper
$ make at91sam9x5ekdf_linux_dt_defconfig
$ make
If the building process is successful, the final .bin image can be found under
binaries/
## 3.2 Compile NandFlashBoot
Let's use at91sam9m10g45ek as an example.
### 3.2.1 Compile booting u-boot image from NandFlash
$ cd <project directory>
$ make mrproper
$ make at91sam9m10g45eknf_uboot_defconfig
$ make
If the building process is successful, the final .bin image can be found under
binaries/
### 3.2.2 Compile booting kernel image from NandFlash
$ cd <project directory>
$ make mrproper
$ make at91sam9m10g45eknf_linux_defconfig
$ make
If the building process is successful, the final .bin image can be found under
binaries/
### 3.2.3 Compile booting kernel & dt image from NandFlash
$ cd <project directory>
$ make mrproper
$ make at91sam9m10g45eknf_linux_dt_defconfig
$ make
If the building process is successful, the final .bin image can be found under
binaries/
## 3.3 Compile SDCardBoot
Let's use at91sam9m10g45ek as an example,
### 3.3.1 Compile booting u-boot image from SDCard
$ cd <project directory>
$ make mrproper
$ make at91sam9m10g45eksd_uboot_defconfig
$ make
If the building process is successful, the final .bin image can be found under
binaries/
### 3.3.2 Compile booting linux image from SDCard
$ cd <project directory>
$ make mrproper
$ make at91sam9m10g45eksd_linux_defconfig
$ make
If the building process is successful, the final .bin image can be found under
binaries/
### 3.3.3 Compile booting linux & dt image from SDCard
$ cd <project directory>
$ make mrproper
$ make at91sam9m10g45eksd_linux_dt_defconfig
$ make
If the building process is successful, the final .bin image can be found under
binaries/
4 Release
================================================================================
If you plan to release the project, you can use the command as below
$ cd <project directory>
$ make tarball
If the command is successful, the .tar.gz tar package can be found under
the project top directory.
5 Others
================================================================================
## 5.1 About booting from NOR flash.
### 5.1.1 ROM Code version
Booting from the external NOR flash is supported in ROM code v2.1
for SAMA5D3x. Bootstrap relocates the binary to the internal SRAM and run.
### 5.1.2 SAM-BA
Using SAM-BA to program the binary to the NOR flash is a little different
from other booting mode. Namely, there is no 'Send Boot File' command for
NOR flash.
You should use 'Send File' command to send the binary file the same like
for a normal file, with 'Address' selected to 0.
6 Contributing your own board
================================================================================
If the system board that you have is not listed, then you will need
to port AT91Bootstrap to your hardware platform. To do this, follow these
steps:
1\. Create a new directory to hold your board specific code under
contrib/board/ directory. Add any files you need.
In your board directory, you will need at least the "board.mk",
a "<board>.c", "<board>.h", "Config.in.board", and "Config.in.boardname".
2\. Create the necessary default configuration files such as
"<board>df_uboot_defconfig" in your new board directory.
3\. Add(source) your board's "Config.in.board" in "contrib/board/Config.in.board" file.
4\. Add(source) your board's "Config.in.boardname" in the "contrib/board/Config.in.boardname" file.
5\. Add your board's "<board>.h" in the "contrib/include/contrib_board.h" file.
6\. Run "make <board>df_uboot_defconfig" with your new name.
7\. Type "make", and you should get the final .bin image can be found under
the binaries/ directory.
7 Contributing
================================================================================
To contribute to AT91Bootstrap you should submit the patches for review to
the github pull-request facility directly or the forum. And don't forget to
Cc the maintainers.
AT91 Forum:
http://www.at91.com/discussions/
Maintainers:
Eugen Hristev <[email protected]>
Nicolas Ferre <[email protected]>
When creating patches insert the [at91bootstrap] tag in the subject, for example
use something like:
git format-patch -s --subject-prefix='at91bootstrap][PATCH' <origin>
-End-