. = ALIGN(8);
} > FLASH
- /* code sections */
+ /* other code sections */
.text : {
. = ALIGN(8);
*(.text)
+ *(.text*)
+
+ *(.init)
+ *(.fini)
. = ALIGN(8);
} > FLASH
- /* readonly data */
+ /* read-only data sections */
.rodata : {
. = ALIGN(8);
*(.rodata)
+ *(.rodata*)
+
+ *(.eh_frame)
. = ALIGN(8);
} > FLASH
+ /* ARM stuff */
+ .ARM.exidx : {
+ *(.ARM.exidx)
+ } > FLASH
+
/* init_array/fini_array (TODO understand this) */
.init_array : {
- PROVIDE_HIDDEN(__init_array_start = .);
- KEEP(*(.init_array))
- PROVIDE_HIDDEN(__init_array_end = .);
+ __init_array_start = .;
+ KEEP(*(SORT(.init_array.*)))
+ KEEP(*(.init_array*))
+ __init_array_end = .;
} > FLASH
.fini_array : {
- PROVIDE_HIDDEN(__fini_array_start = .);
- KEEP(*(.fini_array))
- PROVIDE_HIDDEN(__fini_array_end = .);
+ __fini_array_start = .;
+ KEEP(*(SORT(.fini_array.*)))
+ KEEP(*(.fini_array*))
+ __fini_array_end = .;
} > FLASH
/* initialized data */
/* uninitialized data */
.bss : {
- . = ALIGN(8);
+ . = ALIGN(4);
__bss_start__ = .;
*(.bss)
+ . = ALIGN(4);
__bss_end__ = .;
} > RAM
}
{ COL_0 }, { COL_1 }, { COL_2 }, { COL_3 }, { COL_4 }
};
-static const int keypad_map[ROWS][COLS] = {
- { '7', '8', '9', 'x', '/' },
- { '4', '5', '6', 'y', '*' },
- { '3', '2', '1', 'z', '-' },
- { '.', '0', '\b', '\n', '+' }
-};
+//static const int keypad_map[ROWS][COLS] = {
+// { '7', '8', '9', 'x', '/' },
+// { '4', '5', '6', 'y', '*' },
+// { '3', '2', '1', 'z', '-' },
+// { '.', '0', '\b', '\n', '+' }
+//};
#define BUFFER_SIZE 8
static char keypad_buffer = 'A';//[BUFFER_SIZE];
void keypad_task(void)
{
- unsigned int col = 0;
+ //unsigned int col = 0;
while (1) {
- gpio_dout(keypad_cols[col].port, keypad_cols[col].pin, 1);
- for (unsigned int row = 0; row < ROWS; row++) {
- if (gpio_din(keypad_rows[row].port, keypad_rows[row].pin)) {
- //if (keypad_buffer_pos < BUFFER_SIZE)
- keypad_buffer/*[++keypad_buffer_pos]*/ = keypad_map[row][col];
- while (gpio_din(keypad_rows[row].port, keypad_rows[row].pin))
- delay(1);
- break;
- }
- }
- gpio_dout(keypad_cols[col].port, keypad_cols[col].pin, 0);
- col++;
- if (col == COLS)
- col = 0;
+ // gpio_dout(keypad_cols[col].port, keypad_cols[col].pin, 1);
+ // for (unsigned int row = 0; row < ROWS; row++) {
+ // if (gpio_din(keypad_rows[row].port, keypad_rows[row].pin)) {
+ // //if (keypad_buffer_pos < BUFFER_SIZE)
+ // keypad_buffer/*[++keypad_buffer_pos]*/ = keypad_map[row][col];
+ // while (gpio_din(keypad_rows[row].port, keypad_rows[row].pin))
+ // delay(1);
+ // break;
+ // }
+ // }
+ // gpio_dout(keypad_cols[col].port, keypad_cols[col].pin, 0);
+ // col++;
+ // if (col == COLS)
+ // col = 0;
delay(10);
}
gpio_speed(p, pin, VERYHIGH);
gpio_dout(p, pin, 0);
}
+}
+void keypad_start(void)
+{
task_start(keypad_task, 1024);
}