Fixed build for MC9, disabled RTU
--- a/LPCBus/MC9_Devices_decl.c Fri Mar 13 20:34:14 2015 +0100
+++ b/LPCBus/MC9_Devices_decl.c Fri Mar 13 20:35:22 2015 +0100
@@ -157,8 +157,8 @@
-#define TransmitMode gpio_set_pin_value(RS485_GPIO_dev, 1)
-#define RecieveMode gpio_set_pin_value(RS485_GPIO_dev, 0)
+#define TransmitMode() gpio_set_pin_value(RS485_GPIO_dev, 1) +#define RecieveMode() gpio_set_pin_value(RS485_GPIO_dev, 0) /*--------------------------- Serial Port handling ---------------------------*/
--- a/LPCBus/MC9_OnBoard_cleanup.c Fri Mar 13 20:34:14 2015 +0100
+++ b/LPCBus/MC9_OnBoard_cleanup.c Fri Mar 13 20:35:22 2015 +0100
@@ -1,7 +1,7 @@
-rt_task_delete(&RTU_UART_task);
-rt_task_join(&RTU_UART_task);
-rt_task_delete(&RTU_task);
-rt_task_join(&RTU_task);
-rt_mutex_delete(&RTU_BuffMutex);
-gpio_close(RTU_GPIO_dev);
+// rt_task_delete(&RTU_UART_task); +// rt_task_join(&RTU_UART_task); +// rt_task_delete(&RTU_task); +// rt_task_join(&RTU_task); +// rt_mutex_delete(&RTU_BuffMutex); +// gpio_close(RTU_GPIO_dev); --- a/LPCBus/MC9_OnBoard_decl.c Fri Mar 13 20:34:14 2015 +0100
+++ b/LPCBus/MC9_OnBoard_decl.c Fri Mar 13 20:35:22 2015 +0100
@@ -1,268 +1,268 @@
-/*------------------------- GPIO -------------------------------------*/
-/* from armadeus/target/packages/as_devices/c/as_gpio* */
-# define ERROR(fmt, ...) printf(fmt, ##__VA_ARGS__)
-//# define ERROR(fmt, ...) /*fmt, ##__VA_ARGS__*/
- int pin_file; /* pin file for 2.6.29 interface*/
-struct gpio_device *RTU_GPIO_dev;
-static int write_file_bool(int fd, int value)
- ret = write(fd, value?"1":"0", 1);
- ERROR("write error\n");
- if (lseek(fd, 0, SEEK_SET) < 0) {
- ERROR("lseek error\n");
-static struct gpio_device *gpio_open(int aGpioNum)
- struct gpio_device *dev;
- export_file = open("/sys/class/gpio/export", O_WRONLY);
- ERROR("Can't open /sys/class/gpio/export\nBe sure that gpiolib is under your kernel\n");
- snprintf(buf, BUFF_SIZE, "%%d", aGpioNum);
- retval = write(export_file, buf, strlen(buf));
- ERROR("/sys/class/gpio/export can't be written\n");
- snprintf(buf, BUFF_SIZE, "/sys/class/gpio/gpio%%d/direction", aGpioNum);
- gpio_dir_fd = open(buf, O_WRONLY);
- ERROR("Can't open gpio%%d direction\n", aGpioNum);
- ret = write(gpio_dir_fd, "out", 3);
- ERROR("Error writing direction\n");
- snprintf(buf, BUFF_SIZE, "/sys/class/gpio/gpio%%d/value", aGpioNum);
- pin_file = open(buf, O_RDWR);
- ERROR("Can't export gpio number %%d\n", aGpioNum);
- dev = malloc(sizeof(struct gpio_device));
- ERROR("Can't allocate gpio_device structure\n");
- dev->port_num = aGpioNum;
- dev->pin_file = pin_file;
-static int gpio_close(struct gpio_device *aDev)
- ERROR("device is NULL\n");
- unexport_file = open("/sys/class/gpio/unexport", O_WRONLY);
- if (unexport_file < 0) {
- ERROR("Can't open /sys/class/gpio/unexport\nBe sure that gpiolib is under your kernel\n");
- snprintf(buf, BUFF_SIZE, "%%d", aDev->port_num);
- retval = write(unexport_file, buf, strlen(buf));
- ERROR("/sys/class/gpio/unexport can't be written\n");
-static int gpio_set_pin_value(struct gpio_device *aDev, int aValue)
- int pin_file = aDev->pin_file;
- retval = write_file_bool(pin_file, aValue);
- ERROR("Can't write value\n");
-#define REG_DISCRETE_START 0 /**< Input discrete start address */
-#define REG_DISCRETE_NREGS 511 /**< 512 bits (type: single bit, Read only) */
-#define REG_COILS_START 0 /**< Coils start address */
-#define REG_COILS_NREGS 511 /**< 512 bits (type: single bit, Read/Write) */
-#define REG_INPUT_START 0 /**< Input registers start address */
-#define REG_INPUT_NREGS 511 /**< 512 words (type: 16-bit word, Read only) */
-#define REG_HOLDING_START 0 /**< Holding registers start address */
-#define REG_HOLDING_NREGS 511 /**< 512 words (type: 16-bit word, Read/Write) */
-#define MAX_MOD_RTU_DEVICES 16
-typedef struct _mbRtuRdHoldingRegs {
- unsigned short startAddr;
- unsigned short* buffer;
-typedef struct _mbRtuRdDiscInputs {
- unsigned short startAddr;
-// unsigned short* buffer;
-typedef struct _mbRtuRdCoils {
- unsigned short startAddr;
-typedef struct _mbRtuWrSingleCoil {
- unsigned short startAddr;
-typedef struct _mbRtuWrCoils {
- unsigned short startAddr;
-typedef struct _mbRtuRdInputRegs {
- unsigned short startAddr;
- unsigned short* buffer;
-typedef struct _mbRtuWrSingleReg {
- unsigned short startAddr;
- unsigned short* buffer;
-typedef struct _mbRtuWrMultiRegs {
- unsigned short startAddr;
- unsigned short* buffer;
-typedef struct _mbRtuSlaveConfig {
- unsigned char slaveAddr;
- mbRtuRdDiscInputs rdDiscInputs;
- mbRtuWrSingleCoil wrSingleCoil;
- mbRtuRdInputRegs rdInputRegs;
- mbRtuRdHoldingRegs rdHoldingRegs;
- mbRtuWrSingleReg wrSingleReg;
- mbRtuWrMultiRegs wrMultiRegs;
-mbRtuSlaveConfig mbRtuSlaveDev[MAX_MOD_RTU_DEVICES]; /**< Tables containing information about connected Modbus network devices (initialized by Composer) */
-commTimer mbRtuDevTim[MAX_MOD_RTU_DEVICES]; /**< Table of timers (one for each position) */
-unsigned short usRegInputValue[REG_INPUT_NREGS]; /**< Array of Modbus input registers */
-unsigned short usRegHoldingValue[REG_HOLDING_NREGS]; /**< Array of Modbus holding registers */
-unsigned char ubCoilValue[REG_COILS_NREGS/8]; /**< Array of Modbus coils (8 coils per byte) */
-unsigned char ubRegDiscreteValue[REG_DISCRETE_NREGS/8]; /**< Array of Modbus discrete inputs (8 inputs per byte) */
-/* prototypes for functions defined in shared library */
-void mbmrtu_BusUpdate(void);
-static RT_TASK RTU_UART_task;
-static RT_TASK RTU_task;
-static RT_MUTEX RTU_BuffMutex;
-void LockMBRTUBuffer(void){
- rt_mutex_acquire(&RTU_BuffMutex, TM_INFINITE );
-void UnLockMBRTUBuffer(void){
- rt_mutex_release(&RTU_BuffMutex);
-typedef void (RTU_UART_task_proc_t*)(void*);
-void CreateMBRTUSerialTask(RTU_UART_task_proc_t* RTU_UART_task_proc, void* param){
- if(rt_task_start(&RTU_UART_task, RTU_UART_task_proc, param))
-static void mbmrtu_BusUpdate_proc(void){
- while (rt_task_sleep_until(TM_INFINITE) == -EINTR){
-void TransmitMode(void){
- gpio_set_pin_value(RTU_GPIO_dev, 1);
-void RecieveMode(int us){
- while(rt_task_sleep_until(
- now + rt_timer_ns2ticks(1000LL*us)
- gpio_set_pin_value(RTU_GPIO_dev, 0);
+// /*------------------------- GPIO -------------------------------------*/ +// /* from armadeus/target/packages/as_devices/c/as_gpio* */ +// # define ERROR(fmt, ...) printf(fmt, ##__VA_ARGS__) +// //# define ERROR(fmt, ...) /*fmt, ##__VA_ARGS__*/ +// int pin_file; /* pin file for 2.6.29 interface*/ +// struct gpio_device *RTU_GPIO_dev; +// static int write_file_bool(int fd, int value) +// ret = write(fd, value?"1":"0", 1); +// ERROR("write error\n"); +// if (lseek(fd, 0, SEEK_SET) < 0) { +// ERROR("lseek error\n"); +// #define BUFF_SIZE 256 +// static struct gpio_device *gpio_open(int aGpioNum) +// struct gpio_device *dev; +// export_file = open("/sys/class/gpio/export", O_WRONLY); +// if (export_file < 0) { +// ERROR("Can't open /sys/class/gpio/export\nBe sure that gpiolib is under your kernel\n"); +// snprintf(buf, BUFF_SIZE, "%%d", aGpioNum); +// retval = write(export_file, buf, strlen(buf)); +// ERROR("/sys/class/gpio/export can't be written\n"); +// snprintf(buf, BUFF_SIZE, "/sys/class/gpio/gpio%%d/direction", aGpioNum); +// gpio_dir_fd = open(buf, O_WRONLY); +// if (gpio_dir_fd < 0) { +// ERROR("Can't open gpio%%d direction\n", aGpioNum); +// ret = write(gpio_dir_fd, "out", 3); +// ERROR("Error writing direction\n"); +// snprintf(buf, BUFF_SIZE, "/sys/class/gpio/gpio%%d/value", aGpioNum); +// pin_file = open(buf, O_RDWR); +// ERROR("Can't export gpio number %%d\n", aGpioNum); +// dev = malloc(sizeof(struct gpio_device)); +// ERROR("Can't allocate gpio_device structure\n"); +// dev->port_num = aGpioNum; +// dev->pin_file = pin_file; +// static int gpio_close(struct gpio_device *aDev) +// ERROR("device is NULL\n"); +// unexport_file = open("/sys/class/gpio/unexport", O_WRONLY); +// if (unexport_file < 0) { +// ERROR("Can't open /sys/class/gpio/unexport\nBe sure that gpiolib is under your kernel\n"); +// snprintf(buf, BUFF_SIZE, "%%d", aDev->port_num); +// retval = write(unexport_file, buf, strlen(buf)); +// close(unexport_file); +// ERROR("/sys/class/gpio/unexport can't be written\n"); +// close(aDev->pin_file); +// static int gpio_set_pin_value(struct gpio_device *aDev, int aValue) +// int pin_file = aDev->pin_file; +// retval = write_file_bool(pin_file, aValue); +// ERROR("Can't write value\n"); +// #define REG_DISCRETE_START 0 /**< Input discrete start address */ +// #define REG_DISCRETE_NREGS 511 /**< 512 bits (type: single bit, Read only) */ +// #define REG_COILS_START 0 /**< Coils start address */ +// #define REG_COILS_NREGS 511 /**< 512 bits (type: single bit, Read/Write) */ +// #define REG_INPUT_START 0 /**< Input registers start address */ +// #define REG_INPUT_NREGS 511 /**< 512 words (type: 16-bit word, Read only) */ +// #define REG_HOLDING_START 0 /**< Holding registers start address */ +// #define REG_HOLDING_NREGS 511 /**< 512 words (type: 16-bit word, Read/Write) */ +// #define MAX_MOD_RTU_DEVICES 16 +// typedef struct _mbRtuRdHoldingRegs { +// unsigned short startAddr; +// unsigned char length; +// unsigned short* buffer; +// } mbRtuRdHoldingRegs; +// typedef struct _mbRtuRdDiscInputs { +// unsigned short startAddr; +// unsigned short length; +// unsigned char* buffer; +// // unsigned short* buffer; +// typedef struct _mbRtuRdCoils { +// unsigned short startAddr; +// unsigned short length; +// unsigned char* buffer; +// typedef struct _mbRtuWrSingleCoil { +// unsigned short startAddr; +// unsigned char* buffer; +// typedef struct _mbRtuWrCoils { +// unsigned short startAddr; +// unsigned short length; +// unsigned char* buffer; +// typedef struct _mbRtuRdInputRegs { +// unsigned short startAddr; +// unsigned char length; +// unsigned short* buffer; +// typedef struct _mbRtuWrSingleReg { +// unsigned short startAddr; +// unsigned short* buffer; +// typedef struct _mbRtuWrMultiRegs { +// unsigned short startAddr; +// unsigned char length; +// unsigned short* buffer; +// typedef struct _mbRtuSlaveConfig { +// unsigned char slaveAddr; +// mbRtuRdDiscInputs rdDiscInputs; +// mbRtuRdCoils rdCoils; +// mbRtuWrSingleCoil wrSingleCoil; +// mbRtuWrCoils wrCoils; +// mbRtuRdInputRegs rdInputRegs; +// mbRtuRdHoldingRegs rdHoldingRegs; +// mbRtuWrSingleReg wrSingleReg; +// mbRtuWrMultiRegs wrMultiRegs; +// mbRtuSlaveConfig mbRtuSlaveDev[MAX_MOD_RTU_DEVICES]; /**< Tables containing information about connected Modbus network devices (initialized by Composer) */ +// commTimer mbRtuDevTim[MAX_MOD_RTU_DEVICES]; /**< Table of timers (one for each position) */ +// unsigned short usRegInputValue[REG_INPUT_NREGS]; /**< Array of Modbus input registers */ +// unsigned short usRegHoldingValue[REG_HOLDING_NREGS]; /**< Array of Modbus holding registers */ +// unsigned char ubCoilValue[REG_COILS_NREGS/8]; /**< Array of Modbus coils (8 coils per byte) */ +// unsigned char ubRegDiscreteValue[REG_DISCRETE_NREGS/8]; /**< Array of Modbus discrete inputs (8 inputs per byte) */ +// /* prototypes for functions defined in shared library */ +// void mbmrtu_BusUpdate(void); +// static RT_TASK RTU_UART_task; +// static RT_TASK RTU_task; +// static RT_MUTEX RTU_BuffMutex; +// void LockMBRTUBuffer(void){ +// rt_mutex_acquire(&RTU_BuffMutex, TM_INFINITE ); +// void UnLockMBRTUBuffer(void){ +// rt_mutex_release(&RTU_BuffMutex); +// typedef void (RTU_UART_task_proc_t*)(void*); +// void CreateMBRTUSerialTask(RTU_UART_task_proc_t* RTU_UART_task_proc, void* param){ +// if(rt_task_start(&RTU_UART_task, RTU_UART_task_proc, param)) +// static void mbmrtu_BusUpdate_proc(void){ +// while (rt_task_sleep_until(TM_INFINITE) == -EINTR){ +// void TransmitMode(void){ +// gpio_set_pin_value(RTU_GPIO_dev, 1); +// now = rt_timer_read(); +// void RecieveMode(int us){ +// while(rt_task_sleep_until( +// now + rt_timer_ns2ticks(1000LL*us) +// gpio_set_pin_value(RTU_GPIO_dev, 0); --- a/LPCBus/MC9_OnBoard_init.c Fri Mar 13 20:34:14 2015 +0100
+++ b/LPCBus/MC9_OnBoard_init.c Fri Mar 13 20:35:22 2015 +0100
@@ -1,75 +1,75 @@
-bzero(&usRegInputValue , sizeof(usRegInputValue ));
-bzero(&usRegHoldingValue , sizeof(usRegHoldingValue ));
-bzero(&ubCoilValue , sizeof(ubCoilValue ));
-bzero(&ubRegDiscreteValue, sizeof(ubRegDiscreteValue));
-bzero(&mbRtuSlaveDev , sizeof(mbRtuSlaveDev ));
-bzero(&mbRtuDevTim , sizeof(mbRtuDevTim ));
-// ******** STUB code for composer **************
-// for(i=0;i<MAX_MOD_RTU_DEVICES;i++)
-// mbRtuSlaveDev[i].slaveAddr = INVALID_RTU_ADDR;
-// mbRtuDevTim[i].toValue = 0;
-// mbRtuDevTim[i].status = TIM_DISABLED;
-// mbRtuSlaveDev[i].rdDiscInputs.use = FALSE;
-// mbRtuSlaveDev[i].rdDiscInputs.startAddr = 0;
-// mbRtuSlaveDev[i].rdDiscInputs.length = 0;
-// mbRtuSlaveDev[i].rdDiscInputs.buffer = &ubRegDiscreteValue[0];
-// mbRtuSlaveDev[i].rdCoils.use = FALSE;
-// mbRtuSlaveDev[i].rdCoils.startAddr = 0;
-// mbRtuSlaveDev[i].rdCoils.length = 0;
-// mbRtuSlaveDev[i].rdCoils.buffer = &ubCoilValue[0];
-// mbRtuSlaveDev[i].wrSingleCoil.use = FALSE;
-// mbRtuSlaveDev[i].wrSingleCoil.startAddr = 0;
-// mbRtuSlaveDev[i].wrSingleCoil.buffer = &ubCoilValue[0];
-// mbRtuSlaveDev[i].wrCoils.use = FALSE;
-// mbRtuSlaveDev[i].wrCoils.startAddr = 0;
-// mbRtuSlaveDev[i].wrCoils.length = 0;
-// mbRtuSlaveDev[i].wrCoils.buffer = &ubCoilValue[0];
+// bzero(&usRegInputValue , sizeof(usRegInputValue )); +// bzero(&usRegHoldingValue , sizeof(usRegHoldingValue )); +// bzero(&ubCoilValue , sizeof(ubCoilValue )); +// bzero(&ubRegDiscreteValue, sizeof(ubRegDiscreteValue)); +// bzero(&mbRtuSlaveDev , sizeof(mbRtuSlaveDev )); +// bzero(&mbRtuDevTim , sizeof(mbRtuDevTim )); -// mbRtuSlaveDev[i].rdInputRegs.use = FALSE;
-// mbRtuSlaveDev[i].rdInputRegs.startAddr = 0;
-// mbRtuSlaveDev[i].rdInputRegs.length = 0;
-// mbRtuSlaveDev[i].rdInputRegs.buffer = &usRegInputValue[0];
-// mbRtuSlaveDev[i].rdHoldingRegs.use = FALSE;
-// mbRtuSlaveDev[i].rdHoldingRegs.startAddr = 0;
-// mbRtuSlaveDev[i].rdHoldingRegs.length = 0;
-// mbRtuSlaveDev[i].rdHoldingRegs.buffer = &usRegHoldingValue[0];
-// mbRtuSlaveDev[i].wrSingleReg.use = FALSE;
-// mbRtuSlaveDev[i].wrSingleReg.startAddr = 0;
-// mbRtuSlaveDev[i].wrSingleReg.buffer = &usRegHoldingValue[0];
+// // ******** STUB code for composer ************** +// // for(i=0;i<MAX_MOD_RTU_DEVICES;i++) +// // mbRtuSlaveDev[i].slaveAddr = INVALID_RTU_ADDR; +// // mbRtuDevTim[i].toValue = 0; +// // mbRtuDevTim[i].status = TIM_DISABLED; +// // mbRtuSlaveDev[i].rdDiscInputs.use = FALSE; +// // mbRtuSlaveDev[i].rdDiscInputs.startAddr = 0; +// // mbRtuSlaveDev[i].rdDiscInputs.length = 0; +// // mbRtuSlaveDev[i].rdDiscInputs.buffer = &ubRegDiscreteValue[0]; +// // mbRtuSlaveDev[i].rdCoils.use = FALSE; +// // mbRtuSlaveDev[i].rdCoils.startAddr = 0; +// // mbRtuSlaveDev[i].rdCoils.length = 0; +// // mbRtuSlaveDev[i].rdCoils.buffer = &ubCoilValue[0]; +// // mbRtuSlaveDev[i].wrSingleCoil.use = FALSE; +// // mbRtuSlaveDev[i].wrSingleCoil.startAddr = 0; +// // mbRtuSlaveDev[i].wrSingleCoil.buffer = &ubCoilValue[0]; +// // mbRtuSlaveDev[i].wrCoils.use = FALSE; +// // mbRtuSlaveDev[i].wrCoils.startAddr = 0; +// // mbRtuSlaveDev[i].wrCoils.length = 0; +// // mbRtuSlaveDev[i].wrCoils.buffer = &ubCoilValue[0]; +// // mbRtuSlaveDev[i].rdInputRegs.use = FALSE; +// // mbRtuSlaveDev[i].rdInputRegs.startAddr = 0; +// // mbRtuSlaveDev[i].rdInputRegs.length = 0; +// // mbRtuSlaveDev[i].rdInputRegs.buffer = &usRegInputValue[0]; +// // mbRtuSlaveDev[i].rdHoldingRegs.use = FALSE; +// // mbRtuSlaveDev[i].rdHoldingRegs.startAddr = 0; +// // mbRtuSlaveDev[i].rdHoldingRegs.length = 0; +// // mbRtuSlaveDev[i].rdHoldingRegs.buffer = &usRegHoldingValue[0]; +// // mbRtuSlaveDev[i].wrSingleReg.use = FALSE; +// // mbRtuSlaveDev[i].wrSingleReg.startAddr = 0; +// // mbRtuSlaveDev[i].wrSingleReg.buffer = &usRegHoldingValue[0]; +// // mbRtuSlaveDev[i].wrMultiRegs.use = FALSE; +// // mbRtuSlaveDev[i].wrMultiRegs.startAddr = 0; +// // mbRtuSlaveDev[i].wrMultiRegs.length = 0; +// // mbRtuSlaveDev[i].wrMultiRegs.buffer = &usRegHoldingValue[0]; -// mbRtuSlaveDev[i].wrMultiRegs.use = FALSE;
-// mbRtuSlaveDev[i].wrMultiRegs.startAddr = 0;
-// mbRtuSlaveDev[i].wrMultiRegs.length = 0;
-// mbRtuSlaveDev[i].wrMultiRegs.buffer = &usRegHoldingValue[0];
-RTU_GPIO_dev = gpio_open(111);
- fprintf(stderr, "Error while initializing RTU GPIO.\n");
-if((err = rt_mutex_create (&RTU_BuffMutex, "RTU_BuffMutex")))
-if((err = rt_task_create(&RTU_UART_task, "RTU_UART_task", 0, 50, T_JOINABLE)))
-if((err = rt_task_create(&RTU_task, "RTU_task", 0, 50, T_JOINABLE)))
-if(rt_task_start(&RTU_task, &mbmrtu_BusUpdate, NULL))
+// RTU_GPIO_dev = gpio_open(111); +// fprintf(stderr, "Error while initializing RTU GPIO.\n"); +// if((err = rt_mutex_create (&RTU_BuffMutex, "RTU_BuffMutex"))) +// if((err = rt_task_create(&RTU_UART_task, "RTU_UART_task", 0, 50, T_JOINABLE))) +// if((err = rt_task_create(&RTU_task, "RTU_task", 0, 50, T_JOINABLE))) +// if(rt_task_start(&RTU_task, &mbmrtu_BusUpdate, NULL)) --- a/LPCBus/MC9_OnBoard_publish.c Fri Mar 13 20:34:14 2015 +0100
+++ b/LPCBus/MC9_OnBoard_publish.c Fri Mar 13 20:35:22 2015 +0100
@@ -1,6 +1,6 @@
// setWord16(&usRegHoldingValue[0],*__MW4_1_1_0);
// setBit(&ubRegDiscreteValue[0],0,*__QX4_1_2_0);
--- a/LPCBus/MC9_OnBoard_retrieve.c Fri Mar 13 20:34:14 2015 +0100
+++ b/LPCBus/MC9_OnBoard_retrieve.c Fri Mar 13 20:35:22 2015 +0100
@@ -1,9 +1,10 @@
*__MW4_1_1_0=getWord16(&usRegHoldingValue[0]);
*__MX4_1_0_0=getBit(&ubCoilValue[0],0);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MC9target/XSD Fri Mar 13 20:35:22 2015 +0100
@@ -0,0 +1,9 @@
+<xsd:element name="MC9"> + <xsd:attribute name="Compiler" type="xsd:string" use="optional" default="arm-none-linux-gnueabi-gcc"/> + <xsd:attribute name="CFLAGS" type="xsd:string" use="optional" default="--sysroot=../arm-none-linux-gnueabi-apf28 -I../arm-none-linux-gnueabi-apf28/usr/include/xenomai -D_GNU_SOURCE -D_REENTRANT -Wall -pipe -D__XENO__ -Wno-unused-but-set-variable"/> + <xsd:attribute name="Linker" type="xsd:string" use="optional" default="arm-none-linux-gnueabi-gcc"/> + <xsd:attribute name="LDFLAGS" type="xsd:string" use="optional" default="--sysroot=../arm-none-linux-gnueabi-apf28 -lnative -lxenomai -lpthread -lrtdm"/> + <xsd:attribute name="XenoConfig" type="xsd:string" use="optional"/>