This is the mail archive of the ecos-patches@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: at91 cdl refactoring , settable baudrate from redboot


Jani Monoses wrote:
This moves all common CDL code from the four at91 targets to the variant
CDL and adds CYGINT_HAL_VIRTUAL_VECTOR_COMM_BAUD_SUPPORT so that
baudrate is settable from the redboot cmd line.

I'm afraid I don't agree with some of this patch. This CDL may appear to be common to all the platforms, but only because they are all similar Atmel eval boards. The variant HAL has to be able to also deal with custom AT91 based boards dissimilar from the Atmel eval boards.


As such, CYG_HAL_STARTUP, all the VV channel stuff, CYGSEM_HAL_ROM_MONITOR and CYGSEM_HAL_USE_ROM_MONITOR and CYGBLD_BUILD_REDBOOT_BIN are inappropriate in the variant HAL - they should live in the platform. The rationale:

CYG_HAL_STARTUP: platforms may define more or fewer startup types than ROM, RAM and ROMRAM.

VV channel stuff: the number/speed of channels can vary on a platform - you don't have to use the onchip devices exclusively. In fact they vary between AT91s too. Admittedly there's also a flaw (separate from this patch) that the variant's hal_diag.c should be able to call out to the platform so it can initialise any further channels if required but that can be fixed separately.

CYGSEM_HAL_ROM_MONITOR - may have to specify different requirements for this option

CYGSEM_HAL_USE_ROM_MONITOR - ditto.

CYGBLD_BUILD_REDBOOT_BIN - May need to generate images in additional formats (e.g. byteswapped etc.).

I'm also a little sceptical about:
Compiler/linker flags: these are normally always placed in the platform HAL for maximum flexibility, but I'll leave them here for now as I can't think of any strong case that would actually require them in the platform.


I'll hold off reverting the relevant parts of the patch (i.e. return bits back to the platform HALs) straight away so people have a chance to comment.

Jifl

------------------------------------------------------------------------

Index: hal/arm/at91//eb40/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/arm/at91/eb40/current/ChangeLog,v
retrieving revision 1.5
diff -u -r1.5 ChangeLog
--- hal/arm/at91//eb40/current/ChangeLog 16 Dec 2003 15:22:03 -0000 1.5
+++ hal/arm/at91//eb40/current/ChangeLog 12 Feb 2004 13:59:44 -0000
@@ -1,3 +1,8 @@
+2004-02-12 Jani Monoses <jani@iv.ro>
+
+ * cdl/hal_arm_at91_eb40.cdl: Move configuration options + common to all AT91 EB boards up to AT91 variant .cdl.
+
2003-12-16 Gary Thomas <gary@mlbassoc.com>
* misc/redboot_ROMRAM.ecm: Index: hal/arm/at91//eb40/current/cdl/hal_arm_at91_eb40.cdl
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/arm/at91/eb40/current/cdl/hal_arm_at91_eb40.cdl,v
retrieving revision 1.2
diff -u -r1.2 hal_arm_at91_eb40.cdl
--- hal/arm/at91//eb40/current/cdl/hal_arm_at91_eb40.cdl 6 Oct 2003 19:17:32 -0000 1.2
+++ hal/arm/at91//eb40/current/cdl/hal_arm_at91_eb40.cdl 12 Feb 2004 13:59:44 -0000
@@ -71,110 +71,6 @@
puts $::cdl_header "#define HAL_PLATFORM_EXTRA \"\""
}
- cdl_component CYG_HAL_STARTUP {
- display "Startup type"
- flavor data
- default_value {"RAM"}
- legal_values {"RAM" "ROM" "ROMRAM"}
- no_define
- define -file system.h CYG_HAL_STARTUP
- description "
- When targetting the EB40 eval board it is possible to build
- the system for either RAM bootstrap or ROM bootstrap(s). Select
- 'ram' when building programs to load into RAM using onboard
- debug software such as Angel or eCos GDB stubs. Select 'rom'
- when building a stand-alone application which will be put
- into ROM. Using ROMRAM will allow the program to exist in
- ROM, but be copied to RAM during startup."
- }
-
- # Real-time clock/counter specifics
- cdl_option CYGNUM_HAL_ARM_AT91_CLOCK_SPEED {
- display "CPU clock speed"
- flavor data
- calculated 32768000
- }
-
- cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS {
- display "Number of communication channels on the board"
- flavor data
- calculated 2
- }
- - cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL {
- display "Debug serial port"
- active_if CYGPRI_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_CONFIGURABLE
- flavor data
- legal_values 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
- default_value 0
- description "
- The EB40 board has two serial ports. This option
- chooses which port will be used to connect to a host
- running GDB."
- }
- - cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL {
- display "Diagnostic serial port"
- active_if CYGPRI_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_CONFIGURABLE
- flavor data
- legal_values 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
- default_value 0
- description "
- The EB40 board has two serial ports. This option
- chooses which port will be used for diagnostic output."
- }
-
- cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CHANNELS_DEFAULT_BAUD {
- display "Console/GDB serial port baud rate"
- flavor data
- legal_values 9600 19200 38400 57600 115200
- default_value 38400
- description "
- This option controls the default baud rate used for the
- Console/GDB connection."
- }
-
- cdl_component CYGBLD_GLOBAL_OPTIONS {
- display "Global build options"
- flavor none
- parent CYGPKG_NONE
- description "
- Global build options including control over
- compiler flags, linker flags and choice of toolchain."
-
-
- cdl_option CYGBLD_GLOBAL_COMMAND_PREFIX {
- display "Global command prefix"
- flavor data
- no_define
- default_value { "arm-elf" }
- description "
- This option specifies the command prefix used when
- invoking the build tools."
- }
-
- cdl_option CYGBLD_GLOBAL_CFLAGS {
- display "Global compiler flags"
- flavor data
- no_define
- default_value { "-mcpu=arm7tdmi -mno-short-load-words -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" }
- description "
- This option controls the global compiler flags which are used to
- compile all packages by default. Individual packages may define
- options which override these global flags."
- }
-
- cdl_option CYGBLD_GLOBAL_LDFLAGS {
- display "Global linker flags"
- flavor data
- no_define
- default_value { "-mcpu=arm7tdmi -mno-short-load-words -Wl,--gc-sections -Wl,-static -g -nostdlib" }
- description "
- This option controls the global linker flags. Individual
- packages may define options which override these global flags."
- }
- }
-
cdl_component CYGHWR_MEMORY_LAYOUT {
display "Memory layout"
flavor data
@@ -204,66 +100,4 @@
}
}
- cdl_option CYGSEM_HAL_ROM_MONITOR {
- display "Behave as a ROM monitor"
- flavor bool
- default_value 0
- parent CYGPKG_HAL_ROM_MONITOR
- requires { CYG_HAL_STARTUP == "ROM" || CYG_HAL_STARTUP == "ROMRAM" }
- description "
- Enable this option if this program is to be used as a ROM monitor,
- i.e. applications will be loaded into RAM on the board, and this
- ROM monitor may process exceptions or interrupts generated from the
- application. This enables features such as utilizing a separate
- interrupt stack when exceptions are generated."
- }
-
- cdl_option CYGSEM_HAL_USE_ROM_MONITOR {
- display "Work with a ROM monitor"
- flavor booldata
- legal_values { "Generic" "GDB_stubs" }
- default_value { CYG_HAL_STARTUP == "RAM" ? "GDB_stubs" : 0 }
- parent CYGPKG_HAL_ROM_MONITOR
- requires { CYG_HAL_STARTUP == "RAM" }
- description "
- Support can be enabled for different varieties of ROM monitor.
- This support changes various eCos semantics such as the encoding
- of diagnostic output, or the overriding of hardware interrupt
- vectors.
- Firstly there is \"Generic\" support which prevents the HAL
- from overriding the hardware vectors that it does not use, to
- instead allow an installed ROM monitor to handle them. This is
- the most basic support which is likely to be common to most
- implementations of ROM monitor.
- \"GDB_stubs\" provides support when GDB stubs are included in
- the ROM monitor or boot ROM."
- }
-
- cdl_component CYGPKG_REDBOOT_HAL_OPTIONS {
- display "Redboot HAL options"
- flavor none
- no_define
- parent CYGPKG_REDBOOT
- active_if CYGPKG_REDBOOT
- description "
- This option lists the target's requirements for a valid Redboot
- configuration."
-
- cdl_option CYGBLD_BUILD_REDBOOT_BIN {
- display "Build Redboot ROM binary image"
- active_if CYGBLD_BUILD_REDBOOT
- default_value 1
- no_define
- description "This option enables the conversion of the Redboot ELF
- image to a binary image suitable for ROM programming."
- - make -priority 325 {
- <PREFIX>/bin/redboot.bin : <PREFIX>/bin/redboot.elf
- $(OBJCOPY) --strip-debug $< $(@:.bin=.img) - $(OBJCOPY) -O srec $< $(@:.bin=.srec)
- $(OBJCOPY) -O binary $< $@
- }
-
- }
- }
}
Index: hal/arm/at91//eb40a/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/arm/at91/eb40a/current/ChangeLog,v
retrieving revision 1.5
diff -u -r1.5 ChangeLog
--- hal/arm/at91//eb40a/current/ChangeLog 16 Dec 2003 15:22:03 -0000 1.5
+++ hal/arm/at91//eb40a/current/ChangeLog 12 Feb 2004 13:59:44 -0000
@@ -1,3 +1,8 @@
+2004-02-12 Jani Monoses <jani@iv.ro>
+
+ * cdl/hal_arm_at91_eb40a.cdl: Move configuration options + common to all AT91 EB boards up to AT91 variant .cdl.
+
2003-12-16 Gary Thomas <gary@mlbassoc.com>
* misc/redboot_ROMRAM.ecm: Index: hal/arm/at91//eb40a/current/cdl/hal_arm_at91_eb40a.cdl
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/arm/at91/eb40a/current/cdl/hal_arm_at91_eb40a.cdl,v
retrieving revision 1.2
diff -u -r1.2 hal_arm_at91_eb40a.cdl
--- hal/arm/at91//eb40a/current/cdl/hal_arm_at91_eb40a.cdl 6 Oct 2003 19:18:02 -0000 1.2
+++ hal/arm/at91//eb40a/current/cdl/hal_arm_at91_eb40a.cdl 12 Feb 2004 13:59:44 -0000
@@ -70,110 +70,6 @@
puts $::cdl_header "#define HAL_PLATFORM_EXTRA \"\""
}
- cdl_component CYG_HAL_STARTUP {
- display "Startup type"
- flavor data
- default_value {"RAM"}
- legal_values {"RAM" "ROM" "ROMRAM"}
- no_define
- define -file system.h CYG_HAL_STARTUP
- description "
- When targetting the EB40A eval board it is possible to build
- the system for either RAM bootstrap or ROM bootstrap(s). Select
- 'ram' when building programs to load into RAM using onboard
- debug software such as Angel or eCos GDB stubs. Select 'rom'
- when building a stand-alone application which will be put
- into ROM. Using ROMRAM will allow the program to exist in
- ROM, but be copied to RAM during startup."
- }
-
- # Real-time clock/counter specifics
- cdl_option CYGNUM_HAL_ARM_AT91_CLOCK_SPEED {
- display "CPU clock speed"
- flavor data
- calculated 66000000
- }
-
- cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS {
- display "Number of communication channels on the board"
- flavor data
- calculated 2
- }
-
- cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL {
- display "Debug serial port"
- active_if CYGPRI_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_CONFIGURABLE
- flavor data
- legal_values 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
- default_value 0
- description "
- The EB40A board has two serial ports. This option
- chooses which port will be used to connect to a host
- running GDB."
- }
-
- cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL {
- display "Diagnostic serial port"
- active_if CYGPRI_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_CONFIGURABLE
- flavor data
- legal_values 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
- default_value 0
- description "
- The EB40A board has two serial ports. This option
- chooses which port will be used for diagnostic output."
- }
-
- cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CHANNELS_DEFAULT_BAUD {
- display "Console/GDB serial port baud rate"
- flavor data
- legal_values 9600 19200 38400 57600 115200
- default_value 38400
- description "
- This option controls the default baud rate used for the
- Console/GDB connection."
- }
-
- cdl_component CYGBLD_GLOBAL_OPTIONS {
- display "Global build options"
- flavor none
- parent CYGPKG_NONE
- description "
- Global build options including control over
- compiler flags, linker flags and choice of toolchain."
-
-
- cdl_option CYGBLD_GLOBAL_COMMAND_PREFIX {
- display "Global command prefix"
- flavor data
- no_define
- default_value { "arm-elf" }
- description "
- This option specifies the command prefix used when
- invoking the build tools."
- }
-
- cdl_option CYGBLD_GLOBAL_CFLAGS {
- display "Global compiler flags"
- flavor data
- no_define
- default_value { "-mcpu=arm7tdmi -mno-short-load-words -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" }
- description "
- This option controls the global compiler flags which are used to
- compile all packages by default. Individual packages may define
- options which override these global flags."
- }
-
- cdl_option CYGBLD_GLOBAL_LDFLAGS {
- display "Global linker flags"
- flavor data
- no_define
- default_value { "-mcpu=arm7tdmi -mno-short-load-words -Wl,--gc-sections -Wl,-static -g -nostdlib" }
- description "
- This option controls the global linker flags. Individual
- packages may define options which override these global flags."
- }
- }
-
cdl_component CYGHWR_MEMORY_LAYOUT {
display "Memory layout"
flavor data
@@ -203,66 +99,4 @@
}
}
- cdl_option CYGSEM_HAL_ROM_MONITOR {
- display "Behave as a ROM monitor"
- flavor bool
- default_value 0
- parent CYGPKG_HAL_ROM_MONITOR
- requires { CYG_HAL_STARTUP == "ROM" || CYG_HAL_STARTUP == "ROMRAM" }
- description "
- Enable this option if this program is to be used as a ROM monitor,
- i.e. applications will be loaded into RAM on the board, and this
- ROM monitor may process exceptions or interrupts generated from the
- application. This enables features such as utilizing a separate
- interrupt stack when exceptions are generated."
- }
-
- cdl_option CYGSEM_HAL_USE_ROM_MONITOR {
- display "Work with a ROM monitor"
- flavor booldata
- legal_values { "Generic" "GDB_stubs" }
- default_value { CYG_HAL_STARTUP == "RAM" ? "GDB_stubs" : 0 }
- parent CYGPKG_HAL_ROM_MONITOR
- requires { CYG_HAL_STARTUP == "RAM" }
- description "
- Support can be enabled for different varieties of ROM monitor.
- This support changes various eCos semantics such as the encoding
- of diagnostic output, or the overriding of hardware interrupt
- vectors.
- Firstly there is \"Generic\" support which prevents the HAL
- from overriding the hardware vectors that it does not use, to
- instead allow an installed ROM monitor to handle them. This is
- the most basic support which is likely to be common to most
- implementations of ROM monitor.
- \"GDB_stubs\" provides support when GDB stubs are included in
- the ROM monitor or boot ROM."
- }
-
- cdl_component CYGPKG_REDBOOT_HAL_OPTIONS {
- display "Redboot HAL options"
- flavor none
- no_define
- parent CYGPKG_REDBOOT
- active_if CYGPKG_REDBOOT
- description "
- This option lists the target's requirements for a valid Redboot
- configuration."
-
- cdl_option CYGBLD_BUILD_REDBOOT_BIN {
- display "Build Redboot ROM binary image"
- active_if CYGBLD_BUILD_REDBOOT
- default_value 1
- no_define
- description "This option enables the conversion of the Redboot ELF
- image to a binary image suitable for ROM programming."
-
- make -priority 325 {
- <PREFIX>/bin/redboot.bin : <PREFIX>/bin/redboot.elf
- $(OBJCOPY) --strip-debug $< $(@:.bin=.img)
- $(OBJCOPY) -O srec $< $(@:.bin=.srec)
- $(OBJCOPY) -O binary $< $@
- }
-
- }
- }
}
Index: hal/arm/at91//eb42/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/arm/at91/eb42/current/ChangeLog,v
retrieving revision 1.4
diff -u -r1.4 ChangeLog
--- hal/arm/at91//eb42/current/ChangeLog 16 Dec 2003 15:22:03 -0000 1.4
+++ hal/arm/at91//eb42/current/ChangeLog 12 Feb 2004 13:59:45 -0000
@@ -1,3 +1,8 @@
+2004-02-12 Jani Monoses <jani@iv.ro>
+
+ * cdl/hal_arm_at91_eb42.cdl: Move configuration options + common to all AT91 EB boards up to AT91 variant .cdl.
+
2003-12-16 Gary Thomas <gary@mlbassoc.com>
* misc/redboot_ROMRAM.ecm: Index: hal/arm/at91//eb42/current/cdl/hal_arm_at91_eb42.cdl
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/arm/at91/eb42/current/cdl/hal_arm_at91_eb42.cdl,v
retrieving revision 1.2
diff -u -r1.2 hal_arm_at91_eb42.cdl
--- hal/arm/at91//eb42/current/cdl/hal_arm_at91_eb42.cdl 6 Oct 2003 19:18:53 -0000 1.2
+++ hal/arm/at91//eb42/current/cdl/hal_arm_at91_eb42.cdl 12 Feb 2004 13:59:45 -0000
@@ -71,110 +71,6 @@
puts $::cdl_header "#define HAL_PLATFORM_EXTRA \"\""
}
- cdl_component CYG_HAL_STARTUP {
- display "Startup type"
- flavor data
- default_value {"RAM"}
- legal_values {"RAM" "ROM" "ROMRAM"}
- no_define
- define -file system.h CYG_HAL_STARTUP
- description "
- When targetting the EB42 eval board it is possible to build
- the system for either RAM bootstrap or ROM bootstrap(s). Select
- 'ram' when building programs to load into RAM using onboard
- debug software such as Angel or eCos GDB stubs. Select 'rom'
- when building a stand-alone application which will be put
- into ROM. Using ROMRAM will allow the program to exist in
- ROM, but be copied to RAM during startup."
- }
-
- # Real-time clock/counter specifics
- cdl_option CYGNUM_HAL_ARM_AT91_CLOCK_SPEED {
- display "CPU clock speed"
- flavor data
- calculated 32768000
- }
-
- cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS {
- display "Number of communication channels on the board"
- flavor data
- calculated 2
- }
-
- cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL {
- display "Debug serial port"
- active_if CYGPRI_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_CONFIGURABLE
- flavor data
- legal_values 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
- default_value 0
- description "
- The EB42 board has two serial ports. This option
- chooses which port will be used to connect to a host
- running GDB."
- }
-
- cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL {
- display "Diagnostic serial port"
- active_if CYGPRI_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_CONFIGURABLE
- flavor data
- legal_values 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
- default_value 0
- description "
- The EB42 board has two serial ports. This option
- chooses which port will be used for diagnostic output."
- }
-
- cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CHANNELS_DEFAULT_BAUD {
- display "Console/GDB serial port baud rate"
- flavor data
- legal_values 9600 19200 38400 57600 115200
- default_value 38400
- description "
- This option controls the default baud rate used for the
- Console/GDB connection."
- }
-
- cdl_component CYGBLD_GLOBAL_OPTIONS {
- display "Global build options"
- flavor none
- parent CYGPKG_NONE
- description "
- Global build options including control over
- compiler flags, linker flags and choice of toolchain."
-
-
- cdl_option CYGBLD_GLOBAL_COMMAND_PREFIX {
- display "Global command prefix"
- flavor data
- no_define
- default_value { "arm-elf" }
- description "
- This option specifies the command prefix used when
- invoking the build tools."
- }
-
- cdl_option CYGBLD_GLOBAL_CFLAGS {
- display "Global compiler flags"
- flavor data
- no_define
- default_value { "-mcpu=arm7tdmi -mno-short-load-words -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" }
- description "
- This option controls the global compiler flags which are used to
- compile all packages by default. Individual packages may define
- options which override these global flags."
- }
-
- cdl_option CYGBLD_GLOBAL_LDFLAGS {
- display "Global linker flags"
- flavor data
- no_define
- default_value { "-mcpu=arm7tdmi -mno-short-load-words -Wl,--gc-sections -Wl,-static -g -nostdlib" }
- description "
- This option controls the global linker flags. Individual
- packages may define options which override these global flags."
- }
- }
-
cdl_component CYGHWR_MEMORY_LAYOUT {
display "Memory layout"
flavor data
@@ -218,52 +114,4 @@
interrupt stack when exceptions are generated."
}
- cdl_option CYGSEM_HAL_USE_ROM_MONITOR {
- display "Work with a ROM monitor"
- flavor booldata
- legal_values { "Generic" "GDB_stubs" }
- default_value { CYG_HAL_STARTUP == "RAM" ? "GDB_stubs" : 0 }
- parent CYGPKG_HAL_ROM_MONITOR
- requires { CYG_HAL_STARTUP == "RAM" }
- description "
- Support can be enabled for different varieties of ROM monitor.
- This support changes various eCos semantics such as the encoding
- of diagnostic output, or the overriding of hardware interrupt
- vectors.
- Firstly there is \"Generic\" support which prevents the HAL
- from overriding the hardware vectors that it does not use, to
- instead allow an installed ROM monitor to handle them. This is
- the most basic support which is likely to be common to most
- implementations of ROM monitor.
- \"GDB_stubs\" provides support when GDB stubs are included in
- the ROM monitor or boot ROM."
- }
-
- cdl_component CYGPKG_REDBOOT_HAL_OPTIONS {
- display "Redboot HAL options"
- flavor none
- no_define
- parent CYGPKG_REDBOOT
- active_if CYGPKG_REDBOOT
- description "
- This option lists the target's requirements for a valid Redboot
- configuration."
-
- cdl_option CYGBLD_BUILD_REDBOOT_BIN {
- display "Build Redboot ROM binary image"
- active_if CYGBLD_BUILD_REDBOOT
- default_value 1
- no_define
- description "This option enables the conversion of the Redboot ELF
- image to a binary image suitable for ROM programming."
-
- make -priority 325 {
- <PREFIX>/bin/redboot.bin : <PREFIX>/bin/redboot.elf
- $(OBJCOPY) --strip-debug $< $(@:.bin=.img)
- $(OBJCOPY) -O srec $< $(@:.bin=.srec)
- $(OBJCOPY) -O binary $< $@
- }
-
- }
- }
}
Index: hal/arm/at91//eb55/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/arm/at91/eb55/current/ChangeLog,v
retrieving revision 1.4
diff -u -r1.4 ChangeLog
--- hal/arm/at91//eb55/current/ChangeLog 16 Dec 2003 15:22:04 -0000 1.4
+++ hal/arm/at91//eb55/current/ChangeLog 12 Feb 2004 13:59:45 -0000
@@ -1,3 +1,8 @@
+2004-02-12 Jani Monoses <jani@iv.ro>
+
+ * cdl/hal_arm_at91_eb55.cdl: Move configuration options + common to all AT91 EB boards up to AT91 variant .cdl.
+
2003-12-16 Gary Thomas <gary@mlbassoc.com>
* misc/redboot_ROMRAM.ecm: Index: hal/arm/at91//eb55/current/cdl/hal_arm_at91_eb55.cdl
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/arm/at91/eb55/current/cdl/hal_arm_at91_eb55.cdl,v
retrieving revision 1.2
diff -u -r1.2 hal_arm_at91_eb55.cdl
--- hal/arm/at91//eb55/current/cdl/hal_arm_at91_eb55.cdl 6 Oct 2003 19:18:25 -0000 1.2
+++ hal/arm/at91//eb55/current/cdl/hal_arm_at91_eb55.cdl 12 Feb 2004 13:59:46 -0000
@@ -71,111 +71,6 @@
puts $::cdl_header "#define HAL_PLATFORM_EXTRA \"\""
}
- cdl_component CYG_HAL_STARTUP {
- display "Startup type"
- flavor data
- default_value {"RAM"}
- legal_values {"RAM" "ROM" "ROMRAM"}
- no_define
- define -file system.h CYG_HAL_STARTUP
- description "
- When targetting the EB55 eval board it is possible to build
- the system for either RAM bootstrap or ROM bootstrap(s). Select
- 'ram' when building programs to load into RAM using onboard
- debug software such as Angel or eCos GDB stubs. Select 'rom'
- when building a stand-alone application which will be put
- into ROM. Using ROMRAM will allow the program to exist in
- ROM, but be copied to RAM during startup."
- }
-
- # Real-time clock/counter specifics
- cdl_option CYGNUM_HAL_ARM_AT91_CLOCK_SPEED {
- display "CPU clock speed"
- flavor data
- calculated 32768000
- }
-
- cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS {
- display "Number of communication channels on the board"
- flavor data
- calculated 2
-# calculated 1
- }
-
- cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL {
- display "Debug serial port"
- active_if CYGPRI_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_CONFIGURABLE
- flavor data
- legal_values 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
- default_value 0
- description "
- The EB55 board has two serial ports. This option
- chooses which port will be used to connect to a host
- running GDB."
- }
-
- cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL {
- display "Diagnostic serial port"
- active_if CYGPRI_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_CONFIGURABLE
- flavor data
- legal_values 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
- default_value 0
- description "
- The EB55 board has two serial ports. This option
- chooses which port will be used for diagnostic output."
- }
-
- cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CHANNELS_DEFAULT_BAUD {
- display "Console/GDB serial port baud rate"
- flavor data
- legal_values 9600 19200 38400 57600 115200
- default_value 38400
- description "
- This option controls the default baud rate used for the
- Console/GDB connection."
- }
-
- cdl_component CYGBLD_GLOBAL_OPTIONS {
- display "Global build options"
- flavor none
- parent CYGPKG_NONE
- description "
- Global build options including control over
- compiler flags, linker flags and choice of toolchain."
-
-
- cdl_option CYGBLD_GLOBAL_COMMAND_PREFIX {
- display "Global command prefix"
- flavor data
- no_define
- default_value { "arm-elf" }
- description "
- This option specifies the command prefix used when
- invoking the build tools."
- }
-
- cdl_option CYGBLD_GLOBAL_CFLAGS {
- display "Global compiler flags"
- flavor data
- no_define
- default_value { "-mcpu=arm7tdmi -mno-short-load-words -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" }
- description "
- This option controls the global compiler flags which are used to
- compile all packages by default. Individual packages may define
- options which override these global flags."
- }
-
- cdl_option CYGBLD_GLOBAL_LDFLAGS {
- display "Global linker flags"
- flavor data
- no_define
- default_value { "-mcpu=arm7tdmi -mno-short-load-words -Wl,--gc-sections -Wl,-static -g -nostdlib" }
- description "
- This option controls the global linker flags. Individual
- packages may define options which override these global flags."
- }
- }
-
cdl_component CYGHWR_MEMORY_LAYOUT {
display "Memory layout"
flavor data
@@ -205,66 +100,4 @@
}
}
- cdl_option CYGSEM_HAL_ROM_MONITOR {
- display "Behave as a ROM monitor"
- flavor bool
- default_value 0
- parent CYGPKG_HAL_ROM_MONITOR
- requires { CYG_HAL_STARTUP == "ROM" || CYG_HAL_STARTUP == "ROMRAM" }
- description "
- Enable this option if this program is to be used as a ROM monitor,
- i.e. applications will be loaded into RAM on the board, and this
- ROM monitor may process exceptions or interrupts generated from the
- application. This enables features such as utilizing a separate
- interrupt stack when exceptions are generated."
- }
-
- cdl_option CYGSEM_HAL_USE_ROM_MONITOR {
- display "Work with a ROM monitor"
- flavor booldata
- legal_values { "Generic" "GDB_stubs" }
- default_value { CYG_HAL_STARTUP == "RAM" ? "GDB_stubs" : 0 }
- parent CYGPKG_HAL_ROM_MONITOR
- requires { CYG_HAL_STARTUP == "RAM" }
- description "
- Support can be enabled for different varieties of ROM monitor.
- This support changes various eCos semantics such as the encoding
- of diagnostic output, or the overriding of hardware interrupt
- vectors.
- Firstly there is \"Generic\" support which prevents the HAL
- from overriding the hardware vectors that it does not use, to
- instead allow an installed ROM monitor to handle them. This is
- the most basic support which is likely to be common to most
- implementations of ROM monitor.
- \"GDB_stubs\" provides support when GDB stubs are included in
- the ROM monitor or boot ROM."
- }
-
- cdl_component CYGPKG_REDBOOT_HAL_OPTIONS {
- display "Redboot HAL options"
- flavor none
- no_define
- parent CYGPKG_REDBOOT
- active_if CYGPKG_REDBOOT
- description "
- This option lists the target's requirements for a valid Redboot
- configuration."
-
- cdl_option CYGBLD_BUILD_REDBOOT_BIN {
- display "Build Redboot ROM binary image"
- active_if CYGBLD_BUILD_REDBOOT
- default_value 1
- no_define
- description "This option enables the conversion of the Redboot ELF
- image to a binary image suitable for ROM programming."
-
- make -priority 325 {
- <PREFIX>/bin/redboot.bin : <PREFIX>/bin/redboot.elf
- $(OBJCOPY) --strip-debug $< $(@:.bin=.img)
- $(OBJCOPY) -O srec $< $(@:.bin=.srec)
- $(OBJCOPY) -O binary $< $@
- }
-
- }
- }
}
Index: hal/arm/at91//var/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/arm/at91/var/current/ChangeLog,v
retrieving revision 1.14
diff -u -r1.14 ChangeLog
--- hal/arm/at91//var/current/ChangeLog 5 Dec 2003 09:56:55 -0000 1.14
+++ hal/arm/at91//var/current/ChangeLog 12 Feb 2004 13:59:46 -0000
@@ -1,3 +1,12 @@
+2004-02-12 Jani Monoses <jani@iv.ro>
+
+ * cdl/hal_arm_at91.cdl: Put configuration options common to all variants
+ here. Replace CYGNUM_HAL_VIRTUAL_VECTOR_CHANNELS_DEFAULT_BAUD with the
+ two separate options for console and debug channels as used by most HALs.
+ * src/hal_diag.c : + Implement CYGINT_HAL_VIRTUAL_VECTOR_COMM_BAUD_SUPPORT so baudrate is
+ changeable from RedBoot.
+
2003-12-05 Andrew Lunn <andrew.lunn@ascom.ch>
* include/hal_diag.h: hal_delay_us() is a C function.
Index: hal/arm/at91//var/current/cdl/hal_arm_at91.cdl
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/arm/at91/var/current/cdl/hal_arm_at91.cdl,v
retrieving revision 1.3
diff -u -r1.3 hal_arm_at91.cdl
--- hal/arm/at91//var/current/cdl/hal_arm_at91.cdl 24 Jul 2003 20:23:58 -0000 1.3
+++ hal/arm/at91//var/current/cdl/hal_arm_at91.cdl 12 Feb 2004 13:59:46 -0000
@@ -64,6 +64,7 @@
implements CYGINT_HAL_DEBUG_GDB_STUBS
implements CYGINT_HAL_DEBUG_GDB_STUBS_BREAK
implements CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT
+ implements CYGINT_HAL_VIRTUAL_VECTOR_COMM_BAUD_SUPPORT
implements CYGINT_HAL_ARM_ARCH_ARM7
implements CYGINT_HAL_ARM_THUMB_ARCH
@@ -105,4 +106,180 @@
default_value ((CYGNUM_HAL_ARM_AT91_CLOCK_SPEED/32) / CYGNUM_HAL_RTC_DENOMINATOR)
}
}
+ + cdl_component CYG_HAL_STARTUP {
+ display "Startup type"
+ flavor data
+ default_value {"RAM"}
+ legal_values {"RAM" "ROM" "ROMRAM"}
+ no_define
+ define -file system.h CYG_HAL_STARTUP
+ description "
+ When targetting the AT91 EBxx eval board it is possible to build
+ the system for either RAM bootstrap or ROM bootstrap(s). Select
+ 'ram' when building programs to load into RAM using onboard
+ debug software such as Angel or eCos GDB stubs. Select 'rom'
+ when building a stand-alone application which will be put
+ into ROM. Using ROMRAM will allow the program to exist in
+ ROM, but be copied to RAM during startup."
+ }
+
+ # Real-time clock/counter specifics
+ cdl_option CYGNUM_HAL_ARM_AT91_CLOCK_SPEED {
+ display "CPU clock speed"
+ flavor data
+ calculated {CYGHWR_HAL_ARM_AT91 == "R40008" ? 66000000: 32768000}
+ }
+
+ cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS {
+ display "Number of communication channels on the board"
+ flavor data
+ calculated 2
+ }
+ + cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL {
+ display "Debug serial port"
+ active_if CYGPRI_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_CONFIGURABLE
+ flavor data
+ legal_values 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
+ default_value 0
+ description "
+ The AT91 EBxx board has two serial ports. This option
+ chooses which port will be used to connect to a host
+ running GDB."
+ }
+ + cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL {
+ display "Diagnostic serial port"
+ active_if CYGPRI_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_CONFIGURABLE
+ flavor data
+ legal_values 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
+ default_value 0
+ description "
+ The AT91 EBxx board has two serial ports. This option
+ chooses which port will be used for diagnostic output."
+ }
+ + cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD {
+ display "Diagnostic serial port baud rate"
+ flavor data
+ legal_values 9600 19200 38400 57600 115200
+ default_value 38400
+ description "
+ This option selects the baud rate used for the diagnostic port."
+ }
+ + cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_BAUD {
+ display "GDB serial port baud rate"
+ flavor data
+ legal_values 9600 19200 38400 57600 115200
+ default_value 38400
+ description "
+ This option controls the baud rate used for the GDB connection."
+ }
+ + cdl_component CYGBLD_GLOBAL_OPTIONS {
+ display "Global build options"
+ flavor none
+ parent CYGPKG_NONE
+ description "
+ Global build options including control over
+ compiler flags, linker flags and choice of toolchain."
+
+
+ cdl_option CYGBLD_GLOBAL_COMMAND_PREFIX {
+ display "Global command prefix"
+ flavor data
+ no_define
+ default_value { "arm-elf" }
+ description "
+ This option specifies the command prefix used when
+ invoking the build tools."
+ }
+
+ cdl_option CYGBLD_GLOBAL_CFLAGS {
+ display "Global compiler flags"
+ flavor data
+ no_define
+ default_value { "-mcpu=arm7tdmi -mno-short-load-words -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" }
+ description "
+ This option controls the global compiler flags which are used to
+ compile all packages by default. Individual packages may define
+ options which override these global flags."
+ }
+
+ cdl_option CYGBLD_GLOBAL_LDFLAGS {
+ display "Global linker flags"
+ flavor data
+ no_define
+ default_value { "-mcpu=arm7tdmi -mno-short-load-words -Wl,--gc-sections -Wl,-static -g -nostdlib" }
+ description "
+ This option controls the global linker flags. Individual
+ packages may define options which override these global flags."
+ }
+ }
+
+ cdl_option CYGSEM_HAL_ROM_MONITOR {
+ display "Behave as a ROM monitor"
+ flavor bool
+ default_value 0
+ parent CYGPKG_HAL_ROM_MONITOR
+ requires { CYG_HAL_STARTUP == "ROM" || CYG_HAL_STARTUP == "ROMRAM" }
+ description "
+ Enable this option if this program is to be used as a ROM monitor,
+ i.e. applications will be loaded into RAM on the board, and this
+ ROM monitor may process exceptions or interrupts generated from the
+ application. This enables features such as utilizing a separate
+ interrupt stack when exceptions are generated."
+ }
+
+ cdl_option CYGSEM_HAL_USE_ROM_MONITOR {
+ display "Work with a ROM monitor"
+ flavor booldata
+ legal_values { "Generic" "GDB_stubs" }
+ default_value { CYG_HAL_STARTUP == "RAM" ? "GDB_stubs" : 0 }
+ parent CYGPKG_HAL_ROM_MONITOR
+ requires { CYG_HAL_STARTUP == "RAM" }
+ description "
+ Support can be enabled for different varieties of ROM monitor.
+ This support changes various eCos semantics such as the encoding
+ of diagnostic output, or the overriding of hardware interrupt
+ vectors.
+ Firstly there is \"Generic\" support which prevents the HAL
+ from overriding the hardware vectors that it does not use, to
+ instead allow an installed ROM monitor to handle them. This is
+ the most basic support which is likely to be common to most
+ implementations of ROM monitor.
+ \"GDB_stubs\" provides support when GDB stubs are included in
+ the ROM monitor or boot ROM."
+ }
+
+ cdl_component CYGPKG_REDBOOT_HAL_OPTIONS {
+ display "Redboot HAL options"
+ flavor none
+ no_define
+ parent CYGPKG_REDBOOT
+ active_if CYGPKG_REDBOOT
+ description "
+ This option lists the target's requirements for a valid Redboot
+ configuration."
+
+ cdl_option CYGBLD_BUILD_REDBOOT_BIN {
+ display "Build Redboot ROM binary image"
+ active_if CYGBLD_BUILD_REDBOOT
+ default_value 1
+ no_define
+ description "This option enables the conversion of the Redboot ELF
+ image to a binary image suitable for ROM programming."
+ + make -priority 325 {
+ <PREFIX>/bin/redboot.bin : <PREFIX>/bin/redboot.elf
+ $(OBJCOPY) --strip-debug $< $(@:.bin=.img) + $(OBJCOPY) -O srec $< $(@:.bin=.srec)
+ $(OBJCOPY) -O binary $< $@
+ }
+
+ }
+ }
+
}
Index: hal/arm/at91//var/current/src/hal_diag.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/hal/arm/at91/var/current/src/hal_diag.c,v
retrieving revision 1.1
diff -u -r1.1 hal_diag.c
--- hal/arm/at91//var/current/src/hal_diag.c 13 May 2003 18:27:59 -0000 1.1
+++ hal/arm/at91//var/current/src/hal_diag.c 12 Feb 2004 13:59:47 -0000
@@ -61,6 +61,7 @@
#include <cyg/hal/hal_intr.h> // HAL_ENABLE/MASK/UNMASK_INTERRUPTS
#include <cyg/hal/hal_misc.h> // Helper functions
#include <cyg/hal/drv_api.h> // CYG_ISR_HANDLED
+#include <cyg/hal/hal_diag.h>
#include <cyg/hal/var_io.h> // USART registers
@@ -69,6 +70,7 @@
cyg_uint8* base;
cyg_int32 msec_timeout;
int isr_vector;
+ int baud_rate;
} channel_data_t;
//-----------------------------------------------------------------------------
@@ -79,7 +81,8 @@
static void
cyg_hal_plf_serial_init_channel(void* __ch_data)
{
- cyg_uint8* base = ((channel_data_t*)__ch_data)->base;
+ channel_data_t* chan = (channel_data_t*)__ch_data;
+ cyg_uint8* base = chan->base;
// Reset device
HAL_WRITE_UINT32(base+AT91_US_CR, AT91_US_CR_RxRESET | AT91_US_CR_TxRESET);
@@ -89,7 +92,7 @@
AT91_US_MR_CLOCK_MCK | AT91_US_MR_LENGTH_8 |
AT91_US_MR_PARITY_NONE | AT91_US_MR_STOP_1);
- HAL_WRITE_UINT32(base+AT91_US_BRG, AT91_US_BAUD(CYGNUM_HAL_VIRTUAL_VECTOR_CHANNELS_DEFAULT_BAUD));
+ HAL_WRITE_UINT32(base+AT91_US_BRG, AT91_US_BAUD(chan->baud_rate));
// Enable RX and TX
HAL_WRITE_UINT32(base+AT91_US_CR, AT91_US_CR_RxENAB | AT91_US_CR_TxENAB);
@@ -195,9 +198,21 @@
channel_data_t* chan = (channel_data_t*)__ch_data;
cyg_uint8* base = ((channel_data_t*)__ch_data)->base;
int ret = 0;
+ va_list ap;
+
CYGARC_HAL_SAVE_GP();
+ va_start(ap, __func);
switch (__func) {
+ case __COMMCTL_GETBAUD:
+ ret = chan->baud_rate;
+ break;
+ case __COMMCTL_SETBAUD:
+ chan->baud_rate = va_arg(ap, cyg_int32);
+ // Should we verify this value here?
+ cyg_hal_plf_serial_init_channel(chan);
+ ret = 0;
+ break;
case __COMMCTL_IRQ_ENABLE:
irq_state = 1;
HAL_INTERRUPT_ACKNOWLEDGE(chan->isr_vector);
@@ -261,8 +276,8 @@
}
static channel_data_t at91_ser_channels[2] = {
- { (cyg_uint8*)AT91_USART0, 1000, CYGNUM_HAL_INTERRUPT_USART0},
- { (cyg_uint8*)AT91_USART1, 1000, CYGNUM_HAL_INTERRUPT_USART1}
+ { (cyg_uint8*)AT91_USART0, 1000, CYGNUM_HAL_INTERRUPT_USART0, CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD},
+ { (cyg_uint8*)AT91_USART1, 1000, CYGNUM_HAL_INTERRUPT_USART1, CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD}
};
static void


--
eCosCentric    http://www.eCosCentric.com/    The eCos and RedBoot experts
>>>>> Visit us in booth 2527 at the Embedded Systems Conference 2004 <<<<<
March 30 - April 1, San Francisco http://www.esconline.com/electronicaUSA/
--["No sense being pessimistic, it wouldn't work anyway"]-- Opinions==mine


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]