forked from Imagelibrary/rtems
bsps: Move documentation, etc. files to bsps
This patch is a part of the BSP source reorganization. Update #3285.
This commit is contained in:
118
bsps/arm/beagle/README
Normal file
118
bsps/arm/beagle/README
Normal file
@@ -0,0 +1,118 @@
|
||||
BSP for beagleboard xm, beaglebone (original aka white), and beaglebone black.
|
||||
|
||||
original beagleboard isn't tested.
|
||||
|
||||
wiki: http://www.rtems.org/wiki/index.php/Beagleboard
|
||||
|
||||
1. *** CONFIGURING ************
|
||||
|
||||
bsp-specific build options in the environment at build time:
|
||||
CONSOLE_POLLED=1 use polled i/o for console, required to run testsuite
|
||||
CONSOLE_BAUD=... override default console baud rate
|
||||
|
||||
BSPs recognized are:
|
||||
beagleboardorig original beagleboard
|
||||
beagleboardxm beagleboard xm
|
||||
beaglebonewhite original beaglebone
|
||||
beagleboneblack beaglebone black
|
||||
|
||||
Currently the only distinction in the BSP are between the beagleboards and
|
||||
the beaglebones, but the 4 names are specified in case hardware-specific
|
||||
distinctions are made in the future, so this can be done without changing the
|
||||
usage.
|
||||
|
||||
|
||||
2. *** BUILDING ************
|
||||
|
||||
To build BSPs for the beaglebone white and beagleboard xm, starting from
|
||||
a directory in which you have this source tree in rtems-src:
|
||||
|
||||
$ mkdir b-beagle
|
||||
$ cd b-beagle
|
||||
$ ../rtems-src/configure --target=arm-rtems4.11 --enable-rtemsbsp="beaglebonewhite beagleboardxm"
|
||||
$ make all
|
||||
|
||||
This should give you .exes somewhere.
|
||||
|
||||
Then you need 'mkimage' to transform a .exe file to a u-boot image
|
||||
file. first make a flat binary:
|
||||
|
||||
$ arm-rtems4.11-objcopy $exe -O binary $exe.bin
|
||||
$ gzip -9 $exe.bin
|
||||
$ mkimage -A arm -O rtems -T kernel -a 0x80000000 -e 0x80000000 -n RTEMS -d $exe.bin.gz rtems-app.img
|
||||
|
||||
All beagles have memory starting at 0x80000000 so the load & run syntax is the same.
|
||||
|
||||
3. *** BOOTING ************
|
||||
|
||||
Then, boot the beaglebone with u-boot on an SD card and load rtems-app.img
|
||||
from u-boot. Interrupt the u-boot boot to get a prompt.
|
||||
|
||||
Set up a tftp server and a network connection for netbooting. And to
|
||||
copy rtems-app.img to the tftp dir. Otherwise copy the .img to the FAT
|
||||
partition on the SD card and make uboot load & run that.
|
||||
|
||||
4. *** BEAGLEBONES ************
|
||||
|
||||
(tested on both beaglebones)
|
||||
|
||||
Beaglebone original (white) or beaglebone black netbooting:
|
||||
|
||||
uboot# setenv ipaddr 192.168.12.20
|
||||
uboot# setenv serverip 192.168.12.10
|
||||
uboot# echo starting from TFTP
|
||||
uboot# tftp 0x80800000 rtems-app.img
|
||||
uboot# dcache off ; icache off
|
||||
uboot# bootm 0x80800000
|
||||
|
||||
Beaglebone original (white) or beaglebone black from a FAT partition:
|
||||
|
||||
uboot# fatload mmc :1 0x80800000 ticker.img
|
||||
uboot# dcache off ; icache off
|
||||
uboot# bootm 0x80800000
|
||||
|
||||
4. *** BEAGLEBOARD ************
|
||||
|
||||
(tested on xm)
|
||||
|
||||
For the beagleboard the necessary commands are a bit different because
|
||||
of the ethernet over usb:
|
||||
|
||||
uboot# setenv serverip 192.168.12.10
|
||||
uboot# setenv ipaddr 192.168.12.62
|
||||
uboot# setenv usbnet_devaddr e8:03:9a:24:f9:10
|
||||
uboot# setenv usbethaddr e8:03:9a:24:f9:11
|
||||
uboot# usb start
|
||||
uboot# echo starting from TFTP
|
||||
uboot# tftp 0x80800000 rtems-app.img
|
||||
uboot# dcache off ; icache off
|
||||
uboot# bootm 0x80800000
|
||||
|
||||
4. *** SD CARD ****************
|
||||
|
||||
There is a script here that automatically writes an SD card for any of
|
||||
the beagle targets.
|
||||
|
||||
Let's write one for the Beaglebone Black. Assuming your source tree is
|
||||
at $HOME/development/rtems/rtems-src and your bsp is built and linked
|
||||
with examples and installed at $HOME/development/rtems/4.11.
|
||||
|
||||
% cd $HOME/development/rtems/rtems-src/c/src/lib/libbsp/arm/beagle/simscripts
|
||||
% sh sdcard.sh $HOME/development/rtems/4.11 $HOME/development/rtems/b-beagle/arm-rtems4.11/c/beagleboneblack/testsuites/samples/hello/hello.exe
|
||||
|
||||
The script should give you a whole bunch of output, ending in:
|
||||
|
||||
Result is in bone_hello.exe-sdcard.img.
|
||||
|
||||
There you go. dd that to an SD card and boot!
|
||||
|
||||
The script needs to know whether it's for a Beagleboard xM or one of the
|
||||
Beaglebones. This is to know which uboot to use. It will detect this
|
||||
from the path the executable is in (in the above example, it contains
|
||||
'beagleboneblack'), so you have to specify the full path.
|
||||
|
||||
|
||||
Good luck & enjoy!
|
||||
|
||||
Ben Gras
|
||||
beng@shrike-systems.com
|
||||
20
bsps/arm/beagle/README.JTAG
Normal file
20
bsps/arm/beagle/README.JTAG
Normal file
@@ -0,0 +1,20 @@
|
||||
To run RTEMS from scratch (without any other bootcode) on the beagles,
|
||||
you can comfortably load the executables over JTAG using gdb. This is
|
||||
necessarily target-specific however.
|
||||
|
||||
1. BBXM
|
||||
|
||||
- For access to JTAG using openocd, see simscripts/bbxm.cfg.
|
||||
- openocd then offers access to gdb using simscripts/gdbinit.bbxm.
|
||||
- start openocd using bbxm.cfg
|
||||
- copy your .exe to a new dir and that gdbinit file as .gdbinit in the same dir
|
||||
- go there and start gdb:
|
||||
$ arm-rtems4.11-gdb hello.exe
|
||||
- gdb will invoke the BBXM hardware initialization in the bbxm.cfg
|
||||
and load the ELF over JTAG. type 'c' (for continue) to run it.
|
||||
- breakpoints, C statement and single-instruction stepping work.
|
||||
|
||||
2. beaglebone white
|
||||
|
||||
This has been tested with openocd and works but not in as much detail as for
|
||||
the BBXM yet (i.e. loading an executable from scratch).
|
||||
20
bsps/arm/beagle/TESTING
Normal file
20
bsps/arm/beagle/TESTING
Normal file
@@ -0,0 +1,20 @@
|
||||
To build and run the tests for this BSP, use the RTEMS tester.
|
||||
The necessary software can be built with the RTEMS source builder.
|
||||
|
||||
To build the BSP for testing:
|
||||
- set CONSOLE_POLLED=1 in the configure environment, some tests
|
||||
assume console i/o is polled
|
||||
- add --enable-tests to the configure line
|
||||
|
||||
1. Qemu
|
||||
|
||||
Linaro Qemu can emulate the beagleboard xm and so run all regression
|
||||
tests in software. Build the bbxm.bset from the RTEMS source builder and
|
||||
you will get qemu linaro that can run them. There is a beagleboardxm_qemu
|
||||
bsp in the RTEMS tester to invoke it with every test.
|
||||
|
||||
2. bbxm hardware
|
||||
|
||||
This requires JTAG, see README.JTAG. Use the beagleboardxm bsp in the
|
||||
RTEMS tester. It starts gdb to connect to openocd to reset the target
|
||||
and load the RTEMS executable for each test iteration.
|
||||
197
bsps/arm/beagle/pwm/README
Normal file
197
bsps/arm/beagle/pwm/README
Normal file
@@ -0,0 +1,197 @@
|
||||
Pulse Width Modulation subsystem includes EPWM, ECAP , EQEP. There are
|
||||
different instances available for each one. For PWM there are three
|
||||
different individual EPWM module 0 , 1 and 2. So wherever pwmss word is
|
||||
used that affects whole PWM sub system such as EPWM, ECAP and EQEP. This code
|
||||
has only implementation Non high resolution PWM module. APIs for high
|
||||
resolution PWM has been yet to develop.
|
||||
|
||||
For Each EPWM instance, has two PWM channels, e.g. EPWM0 has two channel
|
||||
EPWM0A and EPWM0B. If you configure two PWM outputs(e.g. EPWM0A , EPWM0B)
|
||||
in the same device, then they *must* be configured with the same frequency.
|
||||
Changing frequency on one channel (e.g EPWMxA) will automatically change
|
||||
frequency on another channel(e.g. EPWMxB). However, it is possible to set
|
||||
different pulse-width/duty cycle to different channel at a time. So always
|
||||
set the frequency first and then pulse-width/duty cycle.
|
||||
|
||||
For more you can refer :
|
||||
http://www.ofitselfso.com/BBBCSIO/Source/PWMPortEnum.cs.html
|
||||
|
||||
Pulse Width Modulation uses the system frequency of Beagle Bone Black.
|
||||
|
||||
System frequency = SYSCLKOUT, that is, CPU clock. TBCLK = SYSCLKOUT(By Default)
|
||||
SYCLKOUT = 100 MHz
|
||||
|
||||
Please visit following link to check why SYSCLKDIV = 100MHz:
|
||||
https://groups.google.com/forum/#!topic/beagleboard/Ed2J9Txe_E4
|
||||
(Refer Technical Reference Manual (TRM) Table 15-41 as well)
|
||||
|
||||
To generate different frequencies with the help of PWM module , SYSCLKOUT
|
||||
need to be scaled down, which will act as TBCLK and TBCLK will be base clock
|
||||
for the pwm subsystem.
|
||||
|
||||
TBCLK = SYSCLKOUT/(HSPCLKDIV * CLKDIV)
|
||||
|
||||
|----------------|
|
||||
| clock |
|
||||
SYSCLKOUT---> | |---> TBCLK
|
||||
| prescale |
|
||||
|----------------|
|
||||
^ ^
|
||||
| |
|
||||
TBCTL[CLKDIV]----- ------TBCTL[HSPCLKDIV]
|
||||
|
||||
|
||||
CLKDIV and HSPCLKDIV bits are part of the TBCTL register (Refer TRM).
|
||||
CLKDIV - These bits determine part of the time-base clock prescale value.
|
||||
Please use the following values of CLKDIV to scale down sysclk respectively.
|
||||
0h (R/W) = /1
|
||||
1h (R/W) = /2
|
||||
2h (R/W) = /4
|
||||
3h (R/W) = /8
|
||||
4h (R/W) = /16
|
||||
5h (R/W) = /32
|
||||
6h (R/W) = /64
|
||||
7h (R/W) = /128
|
||||
|
||||
These bits determine part of the time-base clock prescale value.
|
||||
Please use following value of HSPCLKDIV to scale down sysclk respectively
|
||||
0h (R/W) = /1
|
||||
1h (R/W) = /2
|
||||
2h (R/W) = /4
|
||||
3h (R/W) = /6
|
||||
4h (R/W) = /8
|
||||
5h (R/W) = /10
|
||||
6h (R/W) = /12
|
||||
7h (R/W) = /14
|
||||
|
||||
For example, if you set CLKDIV = 3h and HSPCLKDIV= 2h Then
|
||||
SYSCLKOUT will be divided by (1/8)(1/4). It means SYSCLKOUT/32
|
||||
|
||||
How to generate frequency ?
|
||||
|
||||
freq = 1/Period
|
||||
|
||||
TBPRD register is responsible to generate the frequency. These bits determine
|
||||
the period of the time-base counter.
|
||||
|
||||
By default TBCLK = SYSCLKOUT = 100 MHz
|
||||
|
||||
Here by default period is 1/100MHz = 10 nsec
|
||||
|
||||
Following example shows value to be loaded into TBPRD
|
||||
|
||||
e.g. TBPRD = 1 = 1 count
|
||||
count x Period = 1 x 1ns = 1ns
|
||||
freq = 1/Period = 1 / 1ns = 100 MHz
|
||||
|
||||
For duty cycle CMPA and CMPB are the responsible registers.
|
||||
|
||||
To generate single with 50% Duty cycle & 100MHz freq.
|
||||
|
||||
CMPA = count x Duty Cycle
|
||||
= TBPRD x Duty Cycle
|
||||
= 1 x 50/100
|
||||
= 0.2
|
||||
|
||||
The value in the active CMPA register is continuously compared to
|
||||
the time-base counter (TBCNT). When the values are equal, the
|
||||
counter-compare module generates a "time-base counter equal to
|
||||
counter compare A" event. This event is sent to the action-qualifier
|
||||
where it is qualified and converted it into one or more actions.
|
||||
These actions can be applied to either the EPWMxA or the
|
||||
EPWMxB output depending on the configuration of the AQCTLA and
|
||||
AQCTLB registers.
|
||||
|
||||
List of pins for that can be used for different PWM instance :
|
||||
|
||||
------------------------------------------------
|
||||
| EPWM2 | EPWM1 | EPWM0 |
|
||||
------------------------------------------------
|
||||
| BBB_P8_13_2B | BBB_P8_34_1B | BBB_P9_21_0B |
|
||||
| BBB_P8_19_2A | BBB_P8_36_1A | BBB_P9_22_0A |
|
||||
| BBB_P8_45_2A | BBB_P9_14_1A | BBB_P9_29_0B |
|
||||
| BBB_P8_46_2B | BBB_P9_16_1B | BBB_P9_31_0A |
|
||||
------------------------------------------------
|
||||
BBB_P8_13_2B represents P8 Header , pin number 13 , 2nd PWM instance and B channel.
|
||||
|
||||
Following sample program can be used to generate 7 Hz frequency.
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <rtems/test.h>
|
||||
#include <bsp.h>
|
||||
#include <bsp/gpio.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <bsp/bbb-pwm.h>
|
||||
|
||||
const char rtems_test_name[] = "Testing PWM driver";
|
||||
rtems_printer rtems_test_printer;
|
||||
|
||||
static void inline delay_sec(int sec)
|
||||
{
|
||||
rtems_task_wake_after(sec*rtems_clock_get_ticks_per_second());
|
||||
}
|
||||
|
||||
rtems_task Init(rtems_task_argument argument);
|
||||
|
||||
rtems_task Init(
|
||||
rtems_task_argument ignored
|
||||
)
|
||||
{
|
||||
rtems_test_begin();
|
||||
printf("Starting PWM Testing");
|
||||
|
||||
/*Initialize GPIO pins in BBB*/
|
||||
rtems_gpio_initialize();
|
||||
|
||||
/* Set P9 Header , 21 Pin number , PWM B channel and 0 PWM instance to generate frequency*/
|
||||
beagle_epwm_pinmux_setup(BBB_P9_21_0B,BBB_PWMSS0);
|
||||
|
||||
/** Initialize clock for PWM sub system
|
||||
* Turn on time base clock for PWM o instance
|
||||
*/
|
||||
beagle_pwm_init(BBB_PWMSS0);
|
||||
|
||||
float PWM_HZ = 7.0f ; /* 7 Hz */
|
||||
float duty_A = 20.0f ; /* 20% Duty cycle for PWM 0_A output */
|
||||
const float duty_B = 50.0f ; /* 50% Duty cycle for PWM 0_B output*/
|
||||
|
||||
/*Note: Always check whether pwmss clocks are enabled or not before configuring PWM*/
|
||||
bool is_running = beagle_pwmss_is_running(BBB_PWMSS2);
|
||||
|
||||
if(is_running) {
|
||||
|
||||
/*To analyse the two different duty cycle Output should be observed at P8_45 and P8_46 pin number */
|
||||
beagle_pwm_configure(BBB_PWMSS0, PWM_HZ ,duty_A , duty_B);
|
||||
printf("PWM enable for 10s ....\n");
|
||||
|
||||
/*Set Up counter and enable pwm module */
|
||||
beagle_pwm_enable(BBB_PWMSS0);
|
||||
delay_sec(10);
|
||||
|
||||
/*freeze the counter and disable pwm module*/
|
||||
beagle_epwm_disable(BBB_PWMSS0);
|
||||
}
|
||||
}
|
||||
|
||||
/* NOTICE: the clock driver is enabled */
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
|
||||
|
||||
#define CONFIGURE_MAXIMUM_TASKS 1
|
||||
#define CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM
|
||||
|
||||
#define CONFIGURE_MAXIMUM_SEMAPHORES 1
|
||||
|
||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
||||
|
||||
#define CONFIGURE_EXTRA_TASK_STACKS (2 * RTEMS_MINIMUM_STACK_SIZE)
|
||||
|
||||
#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
|
||||
|
||||
#define CONFIGURE_INIT
|
||||
#include <rtems/confdefs.h>
|
||||
|
||||
174
bsps/arm/beagle/simscripts/bbxm.cfg
Normal file
174
bsps/arm/beagle/simscripts/bbxm.cfg
Normal file
@@ -0,0 +1,174 @@
|
||||
# Start with: openocd -f interface/ftdi/flyswatter.cfg -f bbxm.cfg -c 'reset init'
|
||||
# or with: openocd -f interface/ftdi/flyswatter2.cfg -f bbxm.cfg -c 'reset init'
|
||||
source [find board/ti_beagleboard_xm.cfg]
|
||||
|
||||
#
|
||||
# Use the MLO file from uboot to initialise the board.
|
||||
#
|
||||
proc beagleboard_xm_mlo { file } {
|
||||
global _CHIPNAME
|
||||
adapter_khz 10
|
||||
catch { mww phys 0x48307250 0x00000004 }
|
||||
reset init
|
||||
icepick_c_wreset $_CHIPNAME.jrc
|
||||
halt
|
||||
dm37x.cpu arm core_state arm
|
||||
puts "Beagleboard xM MLO: $file"
|
||||
load_image $file 0x402005f8 bin
|
||||
resume 0x40200800
|
||||
sleep 500
|
||||
halt
|
||||
}
|
||||
|
||||
proc beagleboard_xm_init {} {
|
||||
global _CHIPNAME
|
||||
adapter_khz 10
|
||||
catch { mww phys 0x48307250 0x00000004 }
|
||||
reset init
|
||||
icepick_c_wreset $_CHIPNAME.jrc
|
||||
halt
|
||||
dm37x.cpu arm core_state arm
|
||||
|
||||
mwh 0x6e00007c 0x000000ff ;# omap-gpmc
|
||||
mwh 0x6e00007c 0x00000090 ;# omap-gpmc
|
||||
mwh 0x6e000080 0x00000000 ;# omap-gpmc
|
||||
mwh 0x6e00007c 0x00000000 ;# omap-gpmc
|
||||
mwh 0x6e000080 0x00000000 ;# omap-gpmc
|
||||
mwh 0x6e000080 0x00000000 ;# omap-gpmc
|
||||
mwh 0x6e000080 0x00000000 ;# omap-gpmc
|
||||
mwh 0x6e000080 0x00000000 ;# omap-gpmc
|
||||
mwh 0x6e000080 0x00000000 ;# omap-gpmc
|
||||
mwh 0x6e00007c 0x00000030 ;# omap-gpmc
|
||||
mww 0x48004c00 0x00000020 ;# omap3_cm
|
||||
mww 0x48004c10 0x00000020 ;# omap3_cm
|
||||
mww 0x48314048 0x0000aaaa ;# omap3_mpu_wdt
|
||||
mww 0x48314048 0x00005555 ;# omap3_mpu_wdt
|
||||
mww 0x6c000048 0xffffffff ;# omap3_sms
|
||||
mww 0x48004c40 0x00000013 ;# omap3_cm
|
||||
mww 0x48004c10 0x00000025 ;# omap3_cm
|
||||
mww 0x48004c00 0x00000021 ;# omap3_cm
|
||||
mww 0x48306d40 0x00000003 ;# omap3_prm
|
||||
mww 0x48307270 0x00000083 ;# omap3_prm
|
||||
mww 0x48307270 0x00000080 ;# omap3_prm
|
||||
mww 0x48004904 0x00000015 ;# omap3_cm
|
||||
mww 0x48004d00 0x00110016 ;# omap3_cm
|
||||
mww 0x48005140 0x10020a50 ;# omap3_cm
|
||||
mww 0x48004d40 0x08000040 ;# omap3_cm
|
||||
mww 0x48004d40 0x09900040 ;# omap3_cm
|
||||
mww 0x48004d40 0x09900c40 ;# omap3_cm
|
||||
mww 0x48004d40 0x09900c00 ;# omap3_cm
|
||||
mww 0x48004a40 0x00001305 ;# omap3_cm
|
||||
mww 0x48004a40 0x00001125 ;# omap3_cm
|
||||
mww 0x48004a40 0x00001109 ;# omap3_cm
|
||||
mww 0x48004a40 0x0000110a ;# omap3_cm
|
||||
mww 0x48004b40 0x00000005 ;# omap3_cm
|
||||
mww 0x48004c40 0x00000015 ;# omap3_cm
|
||||
mww 0x48004d00 0x00110006 ;# omap3_cm
|
||||
mww 0x48004d00 0x00110007 ;# omap3_cm
|
||||
mww 0x48004d00 0x00110007 ;# omap3_cm
|
||||
mww 0x48005140 0x03020a50 ;# omap3_cm
|
||||
mww 0x48004f40 0x00000004 ;# omap3_cm
|
||||
mww 0x48004e40 0x00000409 ;# omap3_cm
|
||||
mww 0x48004e40 0x00001009 ;# omap3_cm
|
||||
mww 0x48004d48 0x00000009 ;# omap3_cm
|
||||
mww 0x48004d44 0x02436000 ;# omap3_cm
|
||||
mww 0x48004d44 0x0243600c ;# omap3_cm
|
||||
mww 0x48004a40 0x0000110a ;# omap3_cm
|
||||
mww 0x48004d00 0x00170007 ;# omap3_cm
|
||||
mww 0x48004d04 0x00000011 ;# omap3_cm
|
||||
mww 0x48004d50 0x00000001 ;# omap3_cm
|
||||
mww 0x48004d4c 0x00007800 ;# omap3_cm
|
||||
mww 0x48004d4c 0x0000780c ;# omap3_cm
|
||||
mww 0x48004d00 0x00170037 ;# omap3_cm
|
||||
mww 0x48004d04 0x00000017 ;# omap3_cm
|
||||
mww 0x48004004 0x00000011 ;# omap3_cm
|
||||
mww 0x48004044 0x00000001 ;# omap3_cm
|
||||
mww 0x48004040 0x00081400 ;# omap3_cm
|
||||
mww 0x48004040 0x00081400 ;# omap3_cm
|
||||
mww 0x48004004 0x00000017 ;# omap3_cm
|
||||
mww 0x48004944 0x00000001 ;# omap3_cm
|
||||
mww 0x48004940 0x000a5800 ;# omap3_cm
|
||||
mww 0x48004940 0x000a580c ;# omap3_cm
|
||||
mww 0x48004904 0x00000017 ;# omap3_cm
|
||||
mww 0x48005040 0x000000ff ;# omap3_cm
|
||||
mww 0x48004c40 0x00000015 ;# omap3_cm
|
||||
mww 0x48005040 0x000000ff ;# omap3_cm
|
||||
mww 0x48005010 0x00000008 ;# omap3_cm
|
||||
mww 0x48005000 0x00000008 ;# omap3_cm
|
||||
mww 0x48004a00 0x00002000 ;# omap3_cm
|
||||
mww 0x48004a10 0x00002042 ;# omap3_cm
|
||||
mww 0x48005000 0x00000808 ;# omap3_cm
|
||||
mww 0x48005010 0x00000808 ;# omap3_cm
|
||||
mww 0x48004a00 0x0003a000 ;# omap3_cm
|
||||
mww 0x48004a10 0x0003a042 ;# omap3_cm
|
||||
mww 0x48004c10 0x00000025 ;# omap3_cm
|
||||
mww 0x48004000 0x00000001 ;# omap3_cm
|
||||
mww 0x48004a00 0x03fffe29 ;# omap3_cm
|
||||
mww 0x48004a10 0x3ffffffb ;# omap3_cm
|
||||
mww 0x48004a14 0x0000001f ;# omap3_cm
|
||||
mww 0x48004c00 0x000000e9 ;# omap3_cm
|
||||
mww 0x48004c10 0x0000003f ;# omap3_cm
|
||||
mww 0x48004e00 0x00000005 ;# omap3_cm
|
||||
mww 0x48004e10 0x00000001 ;# omap3_cm
|
||||
mww 0x48004f00 0x00000001 ;# omap3_cm
|
||||
mww 0x48004f10 0x00000001 ;# omap3_cm
|
||||
mww 0x48005000 0x0003ffff ;# omap3_cm
|
||||
mww 0x48005010 0x0003ffff ;# omap3_cm
|
||||
mww 0x48005410 0x00000001 ;# omap3_cm
|
||||
mww 0x48005400 0x00000003 ;# omap3_cm
|
||||
mww 0x48004a18 0x00000004 ;# omap3_cm
|
||||
mww 0x48004a08 0x00000004 ;# omap3_cm
|
||||
mww 0x6e000060 0x00001800 ;# omap-gpmc
|
||||
mww 0x6e000064 0x00141400 ;# omap-gpmc
|
||||
mww 0x6e000068 0x00141400 ;# omap-gpmc
|
||||
mww 0x6e00006c 0x0f010f01 ;# omap-gpmc
|
||||
mww 0x6e000070 0x010c1414 ;# omap-gpmc
|
||||
mww 0x6e000074 0x1f0f0a80 ;# omap-gpmc
|
||||
mww 0x6e000078 0x00000870 ;# omap-gpmc
|
||||
mwb 0x6e00007c 0x000000ff ;# omap-gpmc
|
||||
mwb 0x6e00007c 0x00000070 ;# omap-gpmc
|
||||
mwb 0x6e00007c 0x00000090 ;# omap-gpmc
|
||||
mwb 0x6e000080 0x00000000 ;# omap-gpmc
|
||||
mww 0x6d000010 0x00000002 ;# omap.sdrc
|
||||
mww 0x6d000010 0x00000000 ;# omap.sdrc
|
||||
mww 0x6d000044 0x00000100 ;# omap.sdrc
|
||||
mww 0x6d000070 0x04000081 ;# omap.sdrc
|
||||
mww 0x6d000060 0x0000000a ;# omap.sdrc
|
||||
mww 0x6d000080 0x04590099 ;# omap.sdrc
|
||||
mww 0x6d00009c 0xc29dc4c6 ;# omap.sdrc
|
||||
mww 0x6d0000a0 0x00022322 ;# omap.sdrc
|
||||
mww 0x6d0000a4 0x0004e201 ;# omap.sdrc
|
||||
mww 0x6d0000a8 0x00000000 ;# omap.sdrc
|
||||
mww 0x6d0000a8 0x00000001 ;# omap.sdrc
|
||||
mww 0x6d0000a8 0x00000002 ;# omap.sdrc
|
||||
mww 0x6d0000a8 0x00000002 ;# omap.sdrc
|
||||
mww 0x6d000084 0x00000032 ;# omap.sdrc
|
||||
mww 0x6d000040 0x00000004 ;# omap.sdrc
|
||||
mww 0x6d0000b0 0x04590099 ;# omap.sdrc
|
||||
mww 0x6d0000c4 0xc29dc4c6 ;# omap.sdrc
|
||||
mww 0x6d0000c8 0x00022322 ;# omap.sdrc
|
||||
mww 0x6d0000d4 0x0004e201 ;# omap.sdrc
|
||||
mww 0x6d0000d8 0x00000000 ;# omap.sdrc
|
||||
mww 0x6d0000d8 0x00000001 ;# omap.sdrc
|
||||
mww 0x6d0000d8 0x00000002 ;# omap.sdrc
|
||||
mww 0x6d0000d8 0x00000002 ;# omap.sdrc
|
||||
mww 0x6d0000b4 0x00000032 ;# omap.sdrc
|
||||
mww 0x6d0000b0 0x00000000 ;# omap.sdrc
|
||||
mww 0x6e00001c 0x00000000 ;# omap-gpmc
|
||||
mww 0x6e000040 0x00000000 ;# omap-gpmc
|
||||
mww 0x6e000050 0x00000000 ;# omap-gpmc
|
||||
mww 0x6e000078 0x00000000 ;# omap-gpmc
|
||||
mww 0x6e000078 0x00000000 ;# omap-gpmc
|
||||
mww 0x6e000060 0x00001800 ;# omap-gpmc
|
||||
mww 0x6e000064 0x00141400 ;# omap-gpmc
|
||||
mww 0x6e000068 0x00141400 ;# omap-gpmc
|
||||
mww 0x6e00006c 0x0f010f01 ;# omap-gpmc
|
||||
mww 0x6e000070 0x010c1414 ;# omap-gpmc
|
||||
mww 0x6e000074 0x1f0f0a80 ;# omap-gpmc
|
||||
mww 0x6e000078 0x00000870 ;# omap-gpmc
|
||||
mww 0x48004a00 0x437ffe00 ;# omap3_cm
|
||||
mww 0x48004a10 0x637ffed2 ;# omap3_cm
|
||||
puts "Beagleboard xM initialised"
|
||||
}
|
||||
|
||||
init
|
||||
16
bsps/arm/beagle/simscripts/gdbinit.bbxm
Normal file
16
bsps/arm/beagle/simscripts/gdbinit.bbxm
Normal file
@@ -0,0 +1,16 @@
|
||||
target remote localhost:3333
|
||||
mon reset halt
|
||||
mon beagleboard_xm_init
|
||||
load
|
||||
|
||||
b _ARMV4_Exception_undef_default
|
||||
b _ARMV4_Exception_swi_default
|
||||
b _ARMV4_Exception_pref_abort_default
|
||||
b _ARMV4_Exception_data_abort_default
|
||||
b _ARMV4_Exception_reserved_default
|
||||
b _ARMV4_Exception_irq_default
|
||||
b _ARMV4_Exception_fiq_default
|
||||
|
||||
b rtems_fatal
|
||||
b rtems_fatal_error_occurred
|
||||
b _exit
|
||||
63
bsps/arm/beagle/simscripts/qemu-beagleboard.in
Normal file
63
bsps/arm/beagle/simscripts/qemu-beagleboard.in
Normal file
@@ -0,0 +1,63 @@
|
||||
#
|
||||
# ARM/BeagleBoard Qemu Support
|
||||
#
|
||||
|
||||
bspUsesGDBSimulator="no"
|
||||
# bspGeneratesGDBCommands="yes"
|
||||
# bspSupportsGDBServerMode="yes"
|
||||
runBSP=NOT_OVERRIDDEN
|
||||
if [ ! -r ${runBSP} ] ; then
|
||||
runBSP=qemu-system-arm
|
||||
fi
|
||||
bspNeedsDos2Unix="yes"
|
||||
bspGeneratesDeviceTree="yes"
|
||||
bspInputDevice=qemu-gumstix.cmds
|
||||
bspTreeFile=qemu-gumstix.cmds
|
||||
bspRedirectInput=yes
|
||||
|
||||
runARGS()
|
||||
{
|
||||
# qemu-system-arm -M connex -m 289 -nographic -monitor null -pflash connex-flash.img <cmds >log
|
||||
|
||||
UBOOT=${HOME}/qemu/u-boot-connex-400-r1604.bin
|
||||
FLASH=connex-flash.img
|
||||
( dd of=${FLASH} bs=128k count=128 if=/dev/zero ;
|
||||
dd of=${FLASH} bs=128k conv=notrunc if=${UBOOT} ;
|
||||
dd of=${FLASH} bs=1k conv=notrunc seek=4096 if=${1} ) >/dev/null 2>&1
|
||||
|
||||
if [ ${coverage} = yes ] ; then
|
||||
rm -f trace ${1}.tra
|
||||
COVERAGE_ARG="-trace ${1}.tra"
|
||||
fi
|
||||
|
||||
echo "-M connex -m 289 -nographic -monitor null \
|
||||
-pflash ${FLASH} ${COVERAGE_ARG}"
|
||||
}
|
||||
|
||||
checkBSPFaults()
|
||||
{
|
||||
return 0
|
||||
}
|
||||
|
||||
bspLimit()
|
||||
{
|
||||
testname=$1
|
||||
case ${testname} in
|
||||
*stackchk*)limit=5 ;;
|
||||
*fatal*) limit=1 ;;
|
||||
*minimum*) limit=1 ;;
|
||||
*psxtime*) limit=180 ;;
|
||||
*) limit=60 ;;
|
||||
esac
|
||||
echo ${limit}
|
||||
}
|
||||
|
||||
### Generate the commands we boot with
|
||||
bspGenerateDeviceTree()
|
||||
{
|
||||
cat >qemu-gumstix.cmds <<EOF
|
||||
|
||||
bootelf 0x400000
|
||||
|
||||
EOF
|
||||
}
|
||||
84
bsps/arm/beagle/simscripts/sdcard.sh
Normal file
84
bsps/arm/beagle/simscripts/sdcard.sh
Normal file
@@ -0,0 +1,84 @@
|
||||
# we store all generated files here.
|
||||
TMPDIR=tmp_sdcard_dir.$$
|
||||
|
||||
FATIMG=$TMPDIR/bbxm_boot_fat.img
|
||||
SIZE=65536
|
||||
OFFSET=2048
|
||||
FATSIZE=`expr $SIZE - $OFFSET`
|
||||
UENV=uEnv.txt
|
||||
|
||||
rm -rf $TMPDIR
|
||||
mkdir -p $TMPDIR
|
||||
|
||||
if [ $# -ne 2 ]
|
||||
then echo "Usage: $0 <RTEMS prefix> <RTEMS executable>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PREFIX=$1
|
||||
|
||||
if [ ! -d "$PREFIX" ]
|
||||
then echo "This script needs the RTEMS tools bindir as the first argument."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
executable=$2
|
||||
|
||||
case "$2" in
|
||||
*beagleboard*)
|
||||
ubootcfg=omap3_beagle
|
||||
imgtype=bb
|
||||
;;
|
||||
*beaglebone*)
|
||||
ubootcfg=am335x_evm
|
||||
imgtype=bone
|
||||
;;
|
||||
*)
|
||||
echo "Can't guess which uboot to use - please specify full path to executable."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
app=rtems-app.img
|
||||
|
||||
if [ ! -f "$executable" ]
|
||||
then echo "Expecting RTEMS executable as arg; $executable not found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set -e
|
||||
|
||||
IMG=${imgtype}_`basename $2`-sdcard.img
|
||||
|
||||
# Make an empty image
|
||||
dd if=/dev/zero of=$IMG bs=512 seek=`expr $SIZE - 1` count=1
|
||||
dd if=/dev/zero of=$FATIMG bs=512 seek=`expr $FATSIZE - 1` count=1
|
||||
|
||||
# Make an ms-dos FS on it
|
||||
$PREFIX/bin/newfs_msdos -r 1 -m 0xf8 -c 4 -F16 -h 64 -u 32 -S 512 -s $FATSIZE -o 0 ./$FATIMG
|
||||
|
||||
# Prepare the executable.
|
||||
base=`basename $executable`
|
||||
$PREFIX/bin/arm-rtems4.12-objcopy $executable -O binary $TMPDIR/$base.bin
|
||||
gzip -9 $TMPDIR/$base.bin
|
||||
$PREFIX/bin/mkimage -A arm -O rtems -T kernel -a 0x80000000 -e 0x80000000 -n RTEMS -d $TMPDIR/$base.bin.gz $TMPDIR/$app
|
||||
echo "setenv bootdelay 5
|
||||
uenvcmd=run boot
|
||||
boot=fatload mmc 0 0x80800000 $app ; bootm 0x80800000" >$TMPDIR/$UENV
|
||||
|
||||
# Copy the uboot and app image onto the FAT image
|
||||
$PREFIX/bin/mcopy -bsp -i $FATIMG $PREFIX/uboot/$ubootcfg/MLO ::MLO
|
||||
$PREFIX/bin/mcopy -bsp -i $FATIMG $PREFIX/uboot/$ubootcfg/u-boot.img ::u-boot.img
|
||||
$PREFIX/bin/mcopy -bsp -i $FATIMG $TMPDIR/$app ::$app
|
||||
$PREFIX/bin/mcopy -bsp -i $FATIMG $TMPDIR/$UENV ::$UENV
|
||||
|
||||
# Just a single FAT partition (type C) that uses all of the image
|
||||
$PREFIX/bin/partition -m $IMG $OFFSET c:${FATSIZE}\*
|
||||
|
||||
# Put the FAT image into the SD image
|
||||
dd if=$FATIMG of=$IMG seek=$OFFSET
|
||||
|
||||
# cleanup
|
||||
rm -rf $TMPDIR
|
||||
|
||||
echo "Result is in $IMG."
|
||||
Reference in New Issue
Block a user