Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • dev
  • feat_accel_decouple
  • feat_accel_hash_stream
  • feat_dma230_dataio
  • feat_dma350
  • feat_dmax4
  • feat_extio
  • feat_nanosoc_regions
  • feat_qspi_rom
  • main
  • nanosoc-2023
11 results

Target

Select target project
  • soclabs/nanosoc_tech
1 result
Select Git revision
  • dev
  • feat_accel_decouple
  • feat_accel_hash_stream
  • feat_dma230_dataio
  • feat_dma350
  • feat_dmax4
  • feat_extio
  • feat_nanosoc_regions
  • feat_qspi_rom
  • main
  • nanosoc-2023
11 results
Show changes
Commits on Source (2)
Showing
with 4479 additions and 713 deletions
......@@ -56,7 +56,7 @@ module nanosoc_system #(
parameter INCLUDE_JTAG = 0, // Do not Include JTAG feature
// DMA Parameters
parameter DMAC_0_CHANNEL_NUM = 2, // DMAC 0 Number of DMA Channels
parameter DMAC_0_CHANNEL_NUM = 4, // DMAC 0 Number of DMA Channels : Add EXTDATA TX, RX
parameter DMAC_1_CHANNEL_NUM = 2, // DMAC 1 Number of DMA Channels
// SoCDebug Parameters
......@@ -907,7 +907,9 @@ wire EXT_DAT_TXD_TREADY ;
// Expansion DRQ Wiring
//--------------------------
assign EXP_DLAST [1:0] = 2'b00;
assign DMAC_0_DMA_REQ = EXP_DRQ;
assign DMAC_0_DMA_REQ[1:0] = EXP_DRQ;
assign DMAC_0_DMA_REQ[2] = EXT_DAT_RXD_TREADY & SYS_P1_OUT[2];
assign DMAC_0_DMA_REQ[3] = EXT_DAT_TXD_TVALID & & SYS_P1_OUT[3];
// Instantiate Subsystem
//--------------------------
......
Subproject commit 0f0bf3dee094e9e6801210c1d5f190dea912395d
Subproject commit 7105d696b8d67e4b70c9c54cb14c807a311a24b3
......@@ -8,7 +8,7 @@ extern "C" {
#define DMA_PL230_BASE (CMSDK_APB_BASE + 0xF000UL)
#define MAX_NUM_OF_DMA_CHANNELS 2
#define MAX_NUM_OF_DMA_CHANNELS 4
/*------------- PL230 uDMA (PL230) --------------------------------------*/
/** @addtogroup DMA_PL230 CMSDK uDMA controller
......
......@@ -250,11 +250,11 @@ AB
43
18
47
E8
EC
0C
00
00
08
0C
0D
00
00
......@@ -322,7 +322,7 @@ B5
D1
00
F0
1D
1F
FD
10
BD
......@@ -340,7 +340,7 @@ B5
BD
00
F0
DE
E0
FD
11
46
......@@ -354,7 +354,7 @@ F0
F9
00
F0
F6
F8
FD
03
B4
......@@ -466,7 +466,7 @@ C4
A0
00
F0
01
03
FD
03
20
......@@ -526,7 +526,7 @@ C0
A0
00
F0
73
75
FC
05
98
......@@ -554,7 +554,7 @@ C5
A0
00
F0
D5
D7
FC
01
20
......@@ -574,7 +574,7 @@ CB
A0
00
F0
CB
CD
FC
02
20
......@@ -586,7 +586,7 @@ D4
A0
00
F0
C5
C7
FC
00
20
......@@ -866,7 +866,7 @@ DD
A0
00
F0
39
3B
FC
01
20
......@@ -880,7 +880,7 @@ A4
A0
00
F0
32
34
FC
01
20
......@@ -890,7 +890,7 @@ AA
A0
00
F0
2D
2F
FC
00
20
......@@ -908,19 +908,19 @@ AE
A0
00
F0
24
26
FC
B7
A0
00
F0
21
23
FC
C4
A0
00
F0
1E
20
FC
50
49
......@@ -936,7 +936,7 @@ CE
A0
00
F0
16
18
FC
01
21
......@@ -958,7 +958,7 @@ CC
A0
00
F0
0B
0D
FC
CE
49
......@@ -980,7 +980,7 @@ CB
A0
00
F0
00
02
FC
CD
49
......@@ -1002,7 +1002,7 @@ CB
A0
00
F0
F5
F7
FB
D7
49
......@@ -1024,7 +1024,7 @@ D5
A0
00
F0
EA
EC
FB
DA
49
......@@ -1046,7 +1046,7 @@ D8
A0
00
F0
DF
E1
FB
DE
49
......@@ -1068,7 +1068,7 @@ DB
A0
00
F0
D4
D6
FB
DC
49
......@@ -1090,7 +1090,7 @@ D9
A0
00
F0
C9
CB
FB
E5
49
......@@ -1112,7 +1112,7 @@ E2
A0
00
F0
BE
C0
FB
E3
49
......@@ -1134,7 +1134,7 @@ E1
A0
00
F0
B3
B5
FB
ED
49
......@@ -1156,7 +1156,7 @@ EA
A0
00
F0
A8
AA
FB
F5
49
......@@ -1178,7 +1178,7 @@ F2
A0
00
F0
9D
9F
FB
F6
48
......@@ -1198,7 +1198,7 @@ F3
A0
00
F0
93
95
FB
F6
49
......@@ -1226,11 +1226,11 @@ F1
A0
00
F0
15
17
FB
00
F0
F2
F3
FA
00
20
......@@ -1240,7 +1240,7 @@ F9
A0
00
F0
0E
10
FB
F7
E7
......@@ -1770,7 +1770,7 @@ C5
30
00
00
7C
80
0D
00
00
......@@ -1810,7 +1810,7 @@ C5
20
00
40
8C
90
0D
00
00
......@@ -1870,7 +1870,7 @@ C5
30
00
40
AC
B0
0D
00
00
......@@ -1906,7 +1906,7 @@ AC
40
00
40
6C
70
0D
00
00
......@@ -2030,7 +2030,7 @@ AC
80
00
40
9C
A0
0D
00
00
......@@ -2276,7 +2276,7 @@ D0
A0
00
F0
78
7A
F9
A0
68
......@@ -2298,7 +2298,7 @@ D0
A0
00
F0
FD
FF
F8
20
68
......@@ -2312,7 +2312,7 @@ D0
A0
00
F0
F6
F8
F8
17
48
......@@ -2324,11 +2324,11 @@ BD
A0
00
F0
60
62
F9
00
F0
CD
CE
F8
FE
E7
......@@ -2552,7 +2552,7 @@ C0
B2
00
F0
36
37
F8
10
BD
......@@ -2560,11 +2560,11 @@ BD
B5
00
F0
42
43
F8
00
F0
30
31
F8
10
BD
......@@ -2580,19 +2580,19 @@ C0
B2
00
F0
28
29
F8
10
BD
FE
E7
2E
2F
48
00
21
81
60
2E
2F
49
01
61
......@@ -2600,12 +2600,14 @@ E7
21
81
60
2D
2E
48
03
F0
21
01
61
03
21
81
60
2C
......@@ -2618,11 +2620,11 @@ E7
47
2C
48
2A
2B
49
01
60
2B
2C
49
81
61
......@@ -2646,13 +2648,13 @@ D0
20
88
61
21
22
48
00
21
81
60
30
F0
21
01
61
......@@ -2662,7 +2664,7 @@ D0
60
70
47
1D
1E
49
8A
68
......@@ -2694,7 +2696,7 @@ D1
60
70
47
13
14
4B
15
48
......@@ -2775,6 +2777,8 @@ D1
F7
E7
00
00
00
60
00
40
......@@ -2900,7 +2904,7 @@ FF
46
FF
F7
F2
F0
FA
00
28
......@@ -3038,7 +3042,7 @@ B5
E0
FF
F7
09
07
FF
40
1C
......@@ -3058,7 +3062,7 @@ D1
20
FF
F7
FF
FD
FE
10
BD
......@@ -3276,7 +3280,7 @@ F8
46
FF
F7
9D
9B
FE
00
28
......@@ -3294,7 +3298,7 @@ BD
BD
00
00
2F
2B
FD
FF
FF
......@@ -3372,7 +3376,7 @@ B0
B5
FF
F7
50
4E
FE
60
BC
......@@ -3420,7 +3424,7 @@ C0
46
FF
F7
03
01
FA
10
BD
......@@ -3554,7 +3558,7 @@ B1
30
78
00
04
08
0E
00
00
......@@ -3570,7 +3574,7 @@ B1
01
00
00
1C
20
0E
00
00
......
......@@ -2,15 +2,15 @@
04
00
30
C9
CD
02
00
10
D1
D5
02
00
10
D3
D7
02
00
10
......@@ -42,7 +42,7 @@ D3
00
00
00
D5
D9
02
00
10
......@@ -54,139 +54,139 @@ D5
00
00
00
D7
DB
02
00
10
D9
DD
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
DB
DF
02
00
10
......@@ -250,11 +250,11 @@ AB
43
18
47
70
74
02
00
00
90
94
02
00
00
......@@ -324,7 +324,7 @@ B5
BD
00
F0
DF
E1
F8
11
46
......@@ -334,11 +334,11 @@ F7
FF
00
F0
59
5B
F8
00
F0
F7
F9
F8
03
B4
......@@ -350,7 +350,7 @@ FF
BC
00
F0
FD
FF
F8
00
00
......@@ -366,7 +366,7 @@ F8
47
00
00
30
31
4A
10
68
......@@ -378,11 +378,11 @@ F8
28
0D
DA
2E
2F
48
81
60
2E
2F
4B
03
61
......@@ -406,11 +406,11 @@ D1
60
01
E0
29
2A
48
81
60
29
2A
48
81
60
......@@ -418,6 +418,10 @@ E0
21
81
60
F0
21
01
61
41
68
C9
......@@ -496,7 +500,7 @@ F3
8F
FF
F7
B8
B6
FF
10
BD
......@@ -518,7 +522,7 @@ E7
B5
FF
F7
B3
B1
FF
17
A0
......@@ -632,7 +636,7 @@ F0
43
27
32
34
35
20
41
52
......@@ -742,7 +746,7 @@ E7
47
00
00
B9
BD
02
00
10
......@@ -846,7 +850,7 @@ C0
46
FF
F7
02
00
FF
10
BD
......@@ -874,7 +878,7 @@ E7
47
00
00
8C
90
03
00
10
......@@ -890,7 +894,7 @@ E7
01
00
10
90
94
03
00
10
......
0000100101000110,0000110001000110,0000110001000110,0000100101000110,0000011001000110,0000011001000110,0000010101000110,0000100001000110,0000110101000110,0000101101000110,0000100001000110,0000010001000110,0000001101000110,0000100001000110,0000100101000110,0000101001000110,0000100101000111,0000010101000111,0000010101000111,0000010101000111,0000011101000111,0000100101000111,0000101001000111,0000100001000111,0000010001000111,0000001001000111,0000010001000111,0000100001000111,0000101101000111,0000100101000111,0000011001000111,0000010001000111,0000010001000111,0000011001000111,0000100101000111,0000101001000111,0000100101000111,0000010101000111,0000001001000111,0000010101000111
0000010100101010,1111110100101010,0000010100101010,0000000100101001,1111111000101010,0000011000101001,0000000100101001,0000010100101000,0000010100101000,0000000100101000,0000101100101000,0000101000101000,0000011100100111,0000101000101000,0000101100100111,0000110100100111,0000101100100111,0000100100100111,0000111000100111,0000101000100111,0000001100100111,0000101000100111,0000011100100110,0000001000100110,0000011100100110,0000011100100110,0000100100100110,0000101000100110,0000001100100101,0000101000100101,0000010100100101,0000000000100101,0000011000100101,0000010000100101,0000001000100100,0000010000100100,1111111100100101,0000011000100100,0000001000100100,1111110000100100
0000000000000000,0000000000000001,0000000000000011,0000000000000111,0000000000001111,0000000000011111,0000000000111111,0000000001111111,0000000011111111,0000000111111111,0000001111111111,0000011111111111,0000111111111111,0001111111111111,0011111111111111,0111111111111111,1111111111111111
1111111111111111,1111111111111110,1111111111111100,1111111111111000,1111111111110000,1111111111100000,1111111111000000,1111111110000000,1111111100000000,1111111000000000,1111110000000000,1111100000000000,1111000000000000,1110000000000000,1100000000000000,1000000000000000,0000000000000000
0000000000000000,0000000000000001,0000000000000010,0000000000000100,0000000000001000,0000000000010000,0000000000100000,0000000001000000,0000000010000000,0000000100000000,0000001000000000,0000010000000000,0000100000000000,0001000000000000,0010000000000000,0100000000000000,1000000000000000
#include "CMSDK_CM0.h"
#include <string.h>
#include "uart_stdout.h"
#include <stdio.h>
#include "dataio_functions.h"
#include "dma_pl230_driver.h"
#include "dma_pl230_driver.c"
#define CSV_RECORD_LEN (16+1)
#define CSV_RECORD_COUNT (5)
static volatile dma_pl230_channel_data dataio_ip_chain[2];
static volatile dma_pl230_channel_data dataio_op_chain[2];
int pl230_dma_detect(void);
int ID_Check(const unsigned int id_array[], unsigned int offset);
// associate DMA channel numbers
#define DMA_CHAN_DATAIO_IP (3)
#define DMA_CHAN_DATAIO_OP (2)
#define DATA_UART ((CMSDK_UART_TypeDef *) CMSDK_UART1_BASE )
void dataio_ip_driver_dma8( uint32_t nbytes, uint8_t *input)
{
int c = DMA_CHAN_DATAIO_IP;
// program DMA transfers as single chains
dataio_ip_chain[0].SrcEndPointer = DMA_PL230_PTR_END(&(DATA_UART->DATA),PL230_XFER_B,1);
dataio_ip_chain[0].DstEndPointer = DMA_PL230_PTR_END(input,PL230_XFER_B,nbytes);
dataio_ip_chain[0].Control = DMA_PL230_CTRL_SRCFIX(PL230_CTRL_CYCLE_BASIC,PL230_XFER_B,nbytes,PL230_CTRL_RPWR_1);
dma_pl230_table->Primary[c].SrcEndPointer = DMA_PL230_PTR_END(&(dataio_ip_chain[0].SrcEndPointer), PL230_XFER_W, (1*4));
dma_pl230_table->Primary[c].DstEndPointer = DMA_PL230_PTR_END(&(dma_pl230_table->Alternate[c]), PL230_XFER_W, (1*4));
dma_pl230_table->Primary[c].Control = DMA_PL230_CTRL_DSTFIX(PL230_CTRL_CYCLE_DEV_CHAIN_PRI,PL230_XFER_W,(1*4),PL230_CTRL_RPWR_4);
// enable DMA controller channels
DMA_PL230_DMAC->DMA_CFG = 0; /* Disable DMA controller for initialization */
dma_pl230_init(1<<DMA_CHAN_DATAIO_IP);
// test to ensure output DMA has started
while (!(dma_pl230_channel_active(1<<DMA_CHAN_DATAIO_IP)))
;
while (dma_pl230_channel_active(1<<DMA_CHAN_DATAIO_IP))
;
DMA_PL230_DMAC->DMA_CFG = 0; /* Disable DMA controller for initialization */
dma_pl230_init(0); // none active
return;
}
void dataio_op_driver_dma8( uint32_t nbytes, uint8_t *result)
{
int c = DMA_CHAN_DATAIO_OP;
// program DMA transfers as single chains
dataio_op_chain[0].SrcEndPointer = DMA_PL230_PTR_END(result,PL230_XFER_B,nbytes);
dataio_op_chain[0].DstEndPointer = DMA_PL230_PTR_END(&(DATA_UART->DATA),PL230_XFER_B,1);
dataio_op_chain[0].Control = DMA_PL230_CTRL_DSTFIX(PL230_CTRL_CYCLE_BASIC,PL230_XFER_B,nbytes,PL230_CTRL_RPWR_1);
dma_pl230_table->Primary[c].SrcEndPointer = DMA_PL230_PTR_END(&(dataio_op_chain[0].SrcEndPointer), PL230_XFER_W,(1*4));
dma_pl230_table->Primary[c].DstEndPointer = DMA_PL230_PTR_END(&(dma_pl230_table->Alternate[c]), PL230_XFER_W,(1*4));
dma_pl230_table->Primary[c].Control = DMA_PL230_CTRL_DSTFIX(PL230_CTRL_CYCLE_DEV_CHAIN_PRI,PL230_XFER_W,(1*4),PL230_CTRL_RPWR_4);
// enable DMA controller channels
DMA_PL230_DMAC->DMA_CFG = 0; /* Disable DMA controller for initialization */
dma_pl230_init(1<<DMA_CHAN_DATAIO_OP);
// test to ensure output DMA has started
while (!(dma_pl230_channel_active(1<<DMA_CHAN_DATAIO_OP)))
;
while (dma_pl230_channel_active(1<<DMA_CHAN_DATAIO_OP))
;
DMA_PL230_DMAC->DMA_CFG = 0; /* Disable DMA controller for initialization */
dma_pl230_init(0); // none active
return;
}
int main(void) {
unsigned char ch;
char rx_buf[20];
char tx_buf[20];
char * p;
unsigned int rx_record_len;
unsigned int rx_record_count;
unsigned int rx_count;
unsigned int value;
unsigned int end_of_record ;
unsigned int end_of_data ;
UartStdOutInit();
printf("Data Channel CSV Reader/Writer using DMA230 (ASC binary -> Hex) tests\n");
// Reset DMA table structures
dma_pl230_data_struct_init(); // initialize
DataIO_enable();
CMSDK_GPIO1->DATAOUT |= 0x0c; // enable DRQ signals
end_of_data = 0;
rx_record_len = CSV_RECORD_LEN - 1; // due to soft reset in testbench!
rx_record_count = CSV_RECORD_COUNT; // due to soft reset in testbench!
do { // record at a time
dataio_ip_driver_dma8(rx_record_len, (uint8_t *)rx_buf);
rx_count = 0;
value = 0;
end_of_record = 0;
rx_record_len = CSV_RECORD_LEN;
p = rx_buf;
do { // parse process CSV entry
ch = *p++;
if (ch == '0') { value = (value << 1); rx_count++; }
if (ch == '1') { value = (value << 1) + 1; rx_count++; }
if (ch == ',') end_of_record = 1;
if ((ch == '\n') || (ch == '\r')) end_of_record = 1;
// if ((ch == '\n') || (ch == '\r')) end_of_data = (rx_count == 0) ? 1 : 0;
} while ((rx_count <= 16) && (end_of_record == 0) );
if (ch == '\n') end_of_data = (rx_record_count-- > 1) ? 0 : 1 ;
if (rx_count > 0) {
if (ch == ',')
printf(","); // ',' per CSV record
else
printf(".\n"); // newline delimiter
if (ch == ',')
sprintf(tx_buf,"0x%04x,", value);
else
sprintf(tx_buf,"0x%04x\n", value);
tx_buf[8]=0; // string zero terminate
dataio_op_driver_dma8(7, (uint8_t *)tx_buf);
}
} while (end_of_data == 0); // outer record loop
printf("** DATA FILE PROCESSING ** TEST PASSED **\n");
UartEndSimulation();
return 0;
}
20
06
00
30
A5
05
00
00
AD
05
00
00
AF
05
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
B1
05
00
00
00
00
00
00
00
00
00
00
B3
05
00
00
B5
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
B7
05
00
00
00
F0
02
F8
00
F0
4B
F8
0C
A0
30
C8
08
38
24
18
2D
18
A2
46
67
1E
AB
46
54
46
5D
46
AC
42
01
D1
00
F0
3D
F8
7E
46
0F
3E
0F
CC
B6
46
01
26
33
42
00
D0
FB
1A
A2
46
AB
46
33
43
18
47
3C
0B
00
00
5C
0B
00
00
10
3A
02
D3
78
C8
78
C1
FA
D8
52
07
01
D3
30
C8
30
C1
01
D5
04
68
0C
60
70
47
00
00
00
23
00
24
00
25
00
26
10
3A
01
D3
78
C1
FB
D8
52
07
00
D3
30
C1
00
D5
0B
60
70
47
10
B5
64
29
02
D1
00
F0
4F
FB
10
BD
78
29
02
D1
00
F0
80
FB
10
BD
00
20
10
BD
1F
B5
1F
BD
10
B5
10
BD
00
F0
F7
FC
11
46
FF
F7
F7
FF
00
F0
18
F9
00
F0
0F
FD
03
B4
FF
F7
F2
FF
03
BC
00
F0
43
FA
10
B5
B8
4C
00
21
63
68
08
46
0A
01
98
50
D2
18
50
60
90
60
10
64
50
64
90
64
49
1C
04
29
F4
DB
01
20
20
60
10
BD
10
B5
AF
48
00
68
C0
02
C0
0E
40
1C
42
01
10
28
01
DD
AC
48
10
E0
08
28
01
DD
AB
48
0C
E0
04
28
01
DD
FF
20
08
E0
02
28
01
DD
7F
20
04
E0
01
28
01
DD
3F
20
00
E0
1F
20
01
21
C9
07
00
23
00
2B
01
D0
89
18
81
43
9D
4C
A1
A0
61
60
00
F0
AF
FA
00
21
63
68
08
46
0A
01
98
50
D2
18
50
60
90
60
10
64
50
64
90
64
49
1C
04
29
F4
DB
01
20
20
60
10
BD
70
B5
06
46
9E
A0
00
F0
E1
FB
91
4C
25
68
E8
02
C1
0E
A0
A0
49
1C
00
F0
91
FA
28
06
01
0F
A5
A0
00
F0
8C
FA
E9
07
C9
0F
AA
A0
00
F0
87
FA
20
68
00
06
00
0F
14
D0
08
28
12
D0
09
28
10
D0
AD
A0
00
F0
C4
FB
20
68
00
06
05
0F
28
06
01
0F
99
A0
00
F0
74
FA
00
2D
03
D0
08
2D
01
D0
09
2D
F1
D1
00
20
60
60
79
48
40
68
A0
60
00
20
C0
43
E0
62
0F
20
60
63
30
40
A0
62
A0
61
00
2E
01
D0
01
20
60
60
70
BD
70
B5
71
4D
06
46
28
68
00
28
01
D1
FF
F7
6A
FF
6E
4C
02
E0
96
A0
00
F0
97
FB
20
68
00
06
01
0F
03
D0
08
29
01
D0
09
29
F4
D1
00
20
60
60
68
68
A0
60
0F
20
E0
62
60
63
30
40
A0
62
A0
61
02
20
28
60
00
2E
01
D0
01
20
60
60
70
BD
5F
49
89
6A
00
07
00
0F
08
40
70
47
70
B5
8F
4A
8D
4B
13
60
09
18
49
1E
51
60
40
1E
80
05
8C
49
80
0C
40
18
90
60
55
48
11
46
40
68
0C
31
01
63
01
46
7C
31
41
63
87
49
81
63
51
4D
00
24
6C
60
08
20
FF
F7
B7
FF
08
20
FF
F7
DA
FF
00
28
FA
D0
08
20
FF
F7
D5
FF
00
28
FA
D1
6C
60
FF
F7
AA
FF
70
BD
0A
18
70
B5
79
49
20
31
52
1E
0A
60
76
4A
4A
60
40
1E
80
05
78
4A
80
0C
80
18
88
60
3F
48
0C
31
40
68
01
62
01
46
6C
31
41
62
71
49
81
62
3B
4D
00
24
6C
60
04
20
FF
F7
8C
FF
04
20
FF
F7
AF
FF
00
28
FA
D0
04
20
FF
F7
AA
FF
00
28
FA
D1
6C
60
FF
F7
7F
FF
70
BD
F0
B5
8B
B0
00
F0
30
F9
66
48
00
F0
D3
F9
FF
F7
E7
FE
00
F0
89
F9
64
48
41
68
0C
22
11
43
41
60
00
27
10
26
05
25
05
A9
30
46
FF
F7
93
FF
00
21
0C
46
0B
46
11
26
05
AA
10
78
52
1C
30
28
0E
D0
31
28
0F
D0
2C
28
11
D0
0A
28
0F
D0
0D
28
0D
D0
10
29
01
D8
00
2B
EF
D0
0A
28
09
D0
0F
E0
64
00
49
1C
F5
E7
64
00
49
1C
64
1C
F1
E7
01
23
EF
E7
2A
46
6D
1E
01
2A
01
D8
01
27
00
E0
00
27
00
29
0F
D0
2C
28
17
D0
49
A0
00
F0
94
F9
22
46
48
A1
68
46
00
F0
9D
F9
00
20
69
46
08
72
07
20
FF
F7
84
FF
00
2F
BF
D0
44
A0
00
F0
84
F9
00
F0
29
F9
00
20
0B
B0
F0
BD
4B
A0
00
F0
7C
F9
22
46
4A
A1
E6
E7
00
00
00
00
00
30
00
F0
00
40
FF
03
00
00
FF
01
00
00
64
6D
61
20
73
74
72
75
63
74
75
72
65
20
62
6C
6F
63
6B
20
61
64
64
72
65
73
73
20
3D
20
25
78
0A
00
00
00
49
6E
69
74
69
61
6C
69
7A
65
20
50
4C
32
33
30
00
00
00
00
2D
20
23
20
6F
66
20
63
68
61
6E
6E
65
6C
73
20
61
6C
6C
6F
77
65
64
20
3A
20
25
64
0A
00
00
00
2D
20
43
75
72
72
65
6E
74
20
73
74
61
74
75
73
20
20
20
20
20
20
20
20
3A
20
25
78
0A
00
00
00
2D
20
43
75
72
72
65
6E
74
20
6D
61
73
74
65
72
20
65
6E
61
62
6C
65
20
3A
20
25
78
0A
00
00
00
2D
20
77
61
69
74
20
66
6F
72
20
44
4D
41
20
49
44
4C
45
2F
53
54
41
4C
4C
45
44
2F
44
4F
4E
45
00
00
00
00
00
50
00
40
80
01
00
30
09
00
24
0C
3E
80
24
EA
09
00
24
C0
F0
0B
00
00
00
10
01
40
2E
0A
00
00
30
78
25
30
34
78
0A
00
2A
2A
20
44
41
54
41
20
46
49
4C
45
20
50
52
4F
43
45
53
53
49
4E
47
20
2A
2A
20
54
45
53
54
20
50
41
53
53
45
44
20
2A
2A
0A
00
00
2C
00
00
00
30
78
25
30
34
78
2C
00
04
49
03
48
08
60
70
47
02
49
01
48
08
60
70
47
00
1C
4E
0E
08
00
00
30
07
48
80
47
07
48
00
47
FE
E7
FE
E7
FE
E7
FE
E7
FE
E7
FE
E7
04
48
05
49
05
4A
06
4B
70
47
00
00
95
05
00
00
C1
00
00
00
20
02
00
30
20
06
00
30
20
04
00
30
20
04
00
30
10
B5
C0
B2
00
F0
37
F8
10
BD
10
B5
00
F0
42
F8
00
F0
31
F8
10
BD
00
20
C0
43
70
47
10
B5
C0
B2
00
F0
29
F8
10
BD
FE
E7
28
48
00
21
81
60
28
49
01
61
01
21
81
60
27
48
F0
21
01
61
03
21
81
60
25
49
20
20
88
61
70
47
25
48
24
49
01
60
25
49
81
61
01
21
C1
60
C3
21
81
60
01
69
C9
07
FC
D0
1D
49
20
20
88
61
1B
48
00
21
81
60
F0
21
01
61
03
21
81
60
70
47
17
49
8A
68
D2
07
04
D0
4A
68
D2
07
FC
D1
08
60
70
47
10
4A
53
68
DB
07
FC
D1
10
60
F7
E7
0D
48
0F
49
42
68
4B
68
92
07
D2
17
9B
07
DB
17
52
1C
5B
1C
1A
42
F5
D1
42
68
92
07
01
D5
00
68
03
E0
48
68
80
07
01
D5
08
68
C0
B2
70
47
04
20
FF
F7
D7
FF
FE
E7
00
00
00
60
00
40
6A
18
00
00
00
E0
00
40
00
10
01
40
8E
0C
01
00
00
20
00
40
24
F4
00
00
20
49
03
20
88
60
00
20
70
47
1E
48
00
21
81
60
03
21
81
60
00
20
70
47
1A
48
40
68
C0
07
C0
17
40
1C
70
47
17
48
40
68
C0
07
C0
0F
70
47
00
B5
01
46
FF
F7
F7
FF
00
28
FB
D1
12
48
01
60
08
46
00
BD
00
B5
02
46
13
78
00
2B
02
D0
18
46
FF
F7
EE
FF
52
1C
00
2B
F6
D1
00
BD
0A
48
40
68
80
07
C0
0F
70
47
07
48
40
68
80
07
C0
17
40
1C
70
47
00
B5
FF
F7
F7
FF
00
28
FB
D1
02
48
00
68
C0
B2
00
BD
00
00
00
50
00
40
70
47
00
00
0F
B4
05
49
10
B5
03
AA
02
98
00
F0
D1
F9
10
BC
08
BC
04
B0
18
47
00
00
0C
00
00
30
0F
B4
1C
B5
07
4B
06
AA
7B
44
69
46
00
90
05
98
00
F0
A7
F9
00
20
69
46
00
F0
B6
F9
1C
BC
08
BC
04
B0
18
47
7D
03
00
00
70
B5
04
46
85
69
00
68
C1
06
01
D5
30
26
00
E0
20
26
C0
07
07
D0
70
BD
62
68
30
46
A1
68
90
47
20
6A
40
1C
20
62
6D
1E
F6
D5
70
BD
70
B5
04
46
85
69
00
78
C0
07
07
D1
70
BD
62
68
A1
68
20
20
90
47
20
6A
40
1C
20
62
6D
1E
F6
D5
70
BD
00
00
F7
B5
00
25
75
29
10
68
00
99
14
A6
11
D0
C0
46
C0
46
00
28
02
DA
40
42
11
A6
08
E0
00
99
09
68
8A
07
01
D5
0F
A6
02
E0
49
07
04
D5
0E
A6
01
25
01
E0
C0
46
C0
46
00
9F
00
24
24
37
04
E0
00
F0
81
F9
30
31
39
55
64
1C
00
28
F8
D1
2B
46
32
46
21
46
00
98
00
F0
EB
F8
FE
BD
00
00
00
00
00
00
2D
00
00
00
2B
00
00
00
20
00
00
00
70
B5
04
46
0D
46
21
46
10
68
C0
46
C0
46
21
88
09
05
02
D5
0F
4A
7A
44
02
E0
0E
4A
7A
44
0E
32
23
46
00
21
24
33
05
E0
06
07
00
09
36
0F
96
5D
5E
54
49
1C
00
28
F7
D1
20
78
00
23
00
07
05
D5
70
2D
03
D0
00
29
01
D0
02
23
11
32
20
46
00
F0
B8
F8
70
BD
4C
03
00
00
F3
B5
04
46
00
20
81
B0
20
62
20
46
E1
68
88
47
00
28
7D
D0
25
28
02
D0
62
68
A1
68
83
E0
45
4F
00
25
7F
44
20
46
E1
68
88
47
20
28
06
46
08
DB
31
2E
06
D2
B8
19
20
38
00
78
00
28
01
D0
05
43
F0
E7
A8
07
01
D5
04
20
85
43
00
20
E0
61
07
46
A0
61
2A
2E
0A
D0
30
46
00
F0
52
F9
00
28
27
D0
B8
00
00
19
30
3E
00
90
86
61
19
E0
02
98
BA
00
12
19
02
C8
91
61
02
90
20
46
E1
68
88
47
01
2F
06
46
17
D1
E0
69
00
28
1F
DA
20
20
85
43
1C
E0
00
98
0A
21
80
69
48
43
00
99
80
19
30
38
88
61
20
46
E1
68
88
47
06
46
00
F0
2A
F9
00
28
EF
D1
01
2F
0A
D0
2E
2E
08
D1
20
46
E1
68
88
47
06
46
20
20
05
43
7F
1C
02
2F
C3
DB
A0
69
00
28
03
DA
40
42
A0
61
01
20
05
43
E8
07
01
D0
10
20
85
43
00
2E
24
D0
30
46
41
38
19
28
03
D8
01
20
C0
02
05
43
20
36
20
46
25
60
31
46
02
9A
15
46
FF
F7
C9
FB
00
28
0C
D0
01
28
07
D0
ED
1D
E8
08
00
E0
0D
E0
C0
00
08
30
02
90
77
E7
2D
1D
02
95
74
E7
62
68
30
46
A1
68
90
47
20
6A
40
1C
6C
E7
20
6A
FE
BD
00
00
10
03
00
00
10
B5
04
46
03
E0
FF
F7
F9
FD
40
1C
08
D0
20
78
05
49
64
1C
00
28
F6
D1
0A
20
FF
F7
EF
FD
10
BD
00
20
C0
43
10
BD
00
00
0C
00
00
30
70
47
70
47
70
47
FF
B5
04
46
0D
46
81
B0
24
30
00
90
21
68
88
06
04
D5
10
22
E0
69
91
43
21
60
00
E0
01
20
A8
42
01
DD
47
1B
00
E0
00
27
04
98
A1
69
7A
19
10
18
08
1A
A0
61
20
78
C0
06
02
D4
20
46
FF
F7
A1
FE
00
26
08
E0
03
98
62
68
A1
68
80
5D
90
47
20
6A
40
1C
76
1C
20
62
04
98
86
42
F3
DB
20
78
C0
06
0A
D5
20
46
FF
F7
8D
FE
06
E0
62
68
A1
68
30
20
90
47
20
6A
40
1C
20
62
38
46
7F
1E
00
28
F4
DC
07
E0
00
98
62
68
A1
68
40
5D
90
47
20
6A
40
1C
20
62
28
46
6D
1E
00
28
F3
DC
20
46
FF
F7
87
FE
20
78
00
06
02
D5
02
20
05
B0
F0
BD
01
20
FB
E7
00
00
01
69
4A
1C
02
61
08
78
70
47
00
B5
8F
B0
02
91
00
21
05
91
05
49
01
93
79
44
03
91
11
46
04
90
68
46
FF
F7
DF
FE
0F
B0
00
BD
00
00
E5
FF
FF
FF
0A
68
10
70
52
1C
0A
60
70
47
00
00
08
4B
70
B5
0D
46
7B
44
FF
F7
E1
FF
04
46
28
46
FF
F7
6F
FD
00
28
02
D0
00
20
C0
43
70
BD
20
46
70
BD
00
00
D3
FA
FF
FF
01
46
80
08
08
1A
02
09
10
18
02
0A
10
18
02
0C
10
18
C0
08
82
00
12
18
52
00
89
1A
01
E0
40
1C
0A
39
0A
29
FB
D2
70
47
75
46
00
F0
25
F8
AE
46
05
00
69
46
53
46
C0
08
C0
00
85
46
18
B0
20
B5
FF
F7
26
FD
60
BC
00
27
49
08
B6
46
00
26
C0
C5
C0
C5
C0
C5
C0
C5
C0
C5
C0
C5
C0
C5
C0
C5
40
3D
49
00
8D
46
70
47
10
B5
04
46
C0
46
C0
46
20
46
FF
F7
EA
FA
10
BD
00
00
00
48
70
47
C0
01
00
30
30
38
0A
28
01
D2
01
20
70
47
00
20
70
47
30
31
32
33
34
35
36
37
38
39
41
42
43
44
45
46
40
30
58
00
30
31
32
33
34
35
36
37
38
39
61
62
63
64
65
66
40
30
78
00
04
00
00
08
00
00
00
00
00
00
00
02
00
01
00
00
10
00
44
61
74
61
20
43
68
61
6E
6E
65
6C
20
43
53
56
20
52
65
61
64
65
72
2F
57
72
69
74
65
72
20
75
73
69
6E
67
20
44
4D
41
32
33
30
20
28
41
53
43
20
62
69
6E
61
72
79
20
2D
3E
20
48
65
78
29
20
74
65
73
74
73
0A
00
00
58
0C
00
00
00
00
00
30
10
00
00
00
04
01
00
00
68
0C
00
00
10
00
00
30
10
06
00
00
20
01
00
00
00
00
00
00
00
01
00
30
00
1C
4E
0E
00
00
00
00
//-----------------------------------------------------------------------------
// customised Cortex-M0 'nanosoc' controller
// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license.
//
// Contributors
//
// David Flynn (d.w.flynn@soton.ac.uk)
//
// Copyright (c) 2025 SoC Labs (www.soclabs.org)
//-----------------------------------------------------------------------------
#include "CMSDK_CM0.h"
#define DATA_UART ((CMSDK_UART_TypeDef *) CMSDK_UART1_BASE )
#define UART_STATE_TXFULL CMSDK_UART_STATE_TXBF_Msk
#define UART_STATE_RXFULL CMSDK_UART_STATE_RXBF_Msk
#define UART_CTRL_TXEN CMSDK_UART_CTRL_TXEN_Msk
#define UART_CTRL_RXEN CMSDK_UART_CTRL_RXEN_Msk
#define UART_CTRL_TXRXEN (CMSDK_UART_CTRL_TXEN_Msk + CMSDK_UART_CTRL_RXEN_Msk)
#define UART_CTRL_TXIRQEN (CMSDK_UART_CTRL_TXIRQEN_Msk + UART_CTRL_TXRXEN)
#define UART_CTRL_RXIRQEN (CMSDK_UART_CTRL_RXIRQEN_Msk + UART_CTRL_TXRXEN)
unsigned int DataIO_enable(void) {
// DATA_UART->CTRL = 0x00; // re-initialise/flush
DATA_UART->CTRL = UART_CTRL_TXRXEN; // enble TX and RX
return(0);
}
unsigned int DataIO_init(void) {
DATA_UART->CTRL = 0x00; // re-initialise/flush
DATA_UART->CTRL = UART_CTRL_TXRXEN; // enble TX and RX
return(0);
}
// Output ready check
unsigned int DataIO_putc_ready(void) {
return((DATA_UART->STATE & UART_STATE_TXFULL) == 0); // ready if TXBUF empty
}
// Output Busy check
unsigned int DataIO_putc_busy(void) {
return((DATA_UART->STATE & UART_STATE_TXFULL) != 0); // busy if TXBUF full
}
// Output a character
unsigned char DataIO_putc(unsigned char my_ch) {
while (DataIO_putc_busy()) ; // busy wait
DATA_UART->DATA = my_ch; // output the character
return (my_ch);
}
// Output a (zero-terminated) string
void DataIO_puts(unsigned char * mytext) {
unsigned char string_ch;
do {
string_ch = *mytext;
if (string_ch != (char) 0x0) {
DataIO_putc(string_ch); // Normal data
}
*mytext++;
} while (string_ch != 0);
return;
}
// Input ready check
unsigned int DataIO_getc_ready(void) {
return((DATA_UART->STATE & UART_STATE_RXFULL) != 0); // ready if RXBUF set
}
// Input Busy check
unsigned int DataIO_getc_busy(void) {
return((DATA_UART->STATE & UART_STATE_RXFULL) == 0); // busy if RXBUF not set
}
// Input a character
unsigned char DataIO_getc(void) {
while (DataIO_getc_busy()) ; // busy wait
return (DATA_UART->DATA);
}
//-----------------------------------------------------------------------------
// customised Cortex-M0 'nanosoc' controller
// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license.
//
// Contributors
//
// David Flynn (d.w.flynn@soton.ac.uk)
//
// Copyright (c) 2025 SoC Labs (www.soclabs.org)
//-----------------------------------------------------------------------------
// IO enable
extern unsigned int DataIO_enable(void);
extern unsigned int DataIO_init(void);
// Output ready check
extern unsigned char DataIO_putc_ready(void);
// Output busy check
extern unsigned int DataIO_putc_busy(void);
// Output a character
extern unsigned char DataIO_putc(unsigned char my_ch);
// DataIO string output
extern void DataIO_puts(unsigned char * mytext);
// Input ready check
extern unsigned int DataIO_getc_ready(void);
// Input busy check
extern unsigned int DataIO_getc_busy(void);
// Input a character
extern unsigned char DataIO_getc(void);
/* example usage
#include "CMSDK_CM0.h"
#include <string.h>
#include "uart_stdout.h"
#include <stdio.h>
#include "DataIO_functions.h"
int main(void) {
unsigned char ch;
char tx_buf[32];
UartStdOutInit(); // console channel init
printf("Data Channel CSV Reader/Writer (ASC binary -> Hex) tests\n");
DataIO_init(); // datachannel init
do { // rx process CSV entry
if (DataIO_getc_ready()) {
ch = DataIO_Getc();
// ...
}
DataIO_puts((unsigned char*) tx_buf);
do { // tx process
if (DataIO_putc_ready()) {
DataIO_putc(tx_buf[<i>]);
}
*/
#-----------------------------------------------------------------------------
# The confidential and proprietary information contained in this file may
# only be used by a person authorised under and to the extent permitted
# by a subsisting licensing agreement from Arm Limited or its affiliates.
#
# (C) COPYRIGHT 2010-2013 Arm Limited or its affiliates.
# ALL RIGHTS RESERVED
#
# This entire notice must be reproduced on all copies of this file
# and copies of this file may only be made by a person if such person is
# permitted to do so under the terms of a subsisting license agreement
# from Arm Limited or its affiliates.
#
# SVN Information
#
# Checked In : $Date: 2017-10-10 15:55:38 +0100 (Tue, 10 Oct 2017) $
#
# Revision : $Revision: 371321 $
#
# Release Information : Cortex-M System Design Kit-r1p1-00rel0
#-----------------------------------------------------------------------------
#
# Cortex-M System Design Kit software compilation make file
#
#-----------------------------------------------------------------------------
#
# Configurations
#
# Choose the core instantiated, can be
# - CORTEX_M0
# - CORTEX_M0PLUS
CPU_PRODUCT = CORTEX_M0
# Shared software directory
SOFTWARE_DIR = $(SOCLABS_NANOSOC_TECH_DIR)/software
CMSIS_DIR = $(SOFTWARE_DIR)/cmsis
CORE_DIR = $(CMSIS_DIR)/CMSIS/Include
ifeq ($(CPU_PRODUCT),CORTEX_M0PLUS)
DEVICE_DIR = $(CMSIS_DIR)/Device/ARM/CMSDK_CM0plus
else
DEVICE_DIR = $(CMSIS_DIR)/Device/ARM/CMSDK_CM0
endif
# Program file
TESTNAME = dataio_dma230_tests
# Endian Option
COMPILE_BIGEND = 0
# Configuration
ifeq ($(CPU_PRODUCT),CORTEX_M0PLUS)
USER_DEFINE = -DCORTEX_M0PLUS
else
USER_DEFINE = -DCORTEX_M0
endif
DEPS_LIST = makefile
# Tool chain : ds5 / gcc / keil
TOOL_CHAIN = ds5
ifeq ($(TOOL_CHAIN),ds5)
ifeq ($(CPU_PRODUCT),CORTEX_M0PLUS)
CPU_TYPE = --cpu Cortex-M0plus
else
CPU_TYPE = --cpu Cortex-M0
endif
endif
ifeq ($(TOOL_CHAIN),gcc)
ifeq ($(CPU_PRODUCT),CORTEX_M0PLUS)
CPU_TYPE = -mcpu=cortex-m0plus
else
CPU_TYPE = -mcpu=cortex-m0
endif
endif
# Startup code directory for DS-5
ifeq ($(TOOL_CHAIN),ds5)
STARTUP_DIR = $(DEVICE_DIR)/Source/ARM
endif
# Startup code directory for gcc
ifeq ($(TOOL_CHAIN),gcc)
STARTUP_DIR = $(DEVICE_DIR)/Source/GCC
endif
ifeq ($(CPU_PRODUCT),CORTEX_M0PLUS)
STARTUP_FILE = startup_CMSDK_CM0plus
SYSTEM_FILE = system_CMSDK_CM0plus
else
STARTUP_FILE = startup_CMSDK_CM0
SYSTEM_FILE = system_CMSDK_CM0
endif
# ---------------------------------------------------------------------------------------
# DS-5 options
# MicroLIB option
COMPILE_MICROLIB = 0
# Small Multiply (Cortex-M0/M0+ has small multiplier option)
COMPILE_SMALLMUL = 0
ARM_CC_OPTIONS = -c -O3 -Ospace -I $(DEVICE_DIR)/Include -I $(CORE_DIR) \
-I $(SOFTWARE_DIR)/common/retarget -I $(SOFTWARE_DIR)/drivers $(USER_DEFINE)
ARM_ASM_OPTIONS =
ARM_LINK_OPTIONS = "--keep=$(STARTUP_FILE).o(RESET)" "--first=$(STARTUP_FILE).o(RESET)" \
--no_debug --rw_base 0x30000000 --ro_base 0x00000000 --map --info sizes
ifeq ($(COMPILE_BIGEND),1)
# Big Endian
ARM_CC_OPTIONS += --bigend
ARM_ASM_OPTIONS += --bigend
ARM_LINK_OPTIONS += --be8
endif
ifeq ($(COMPILE_MICROLIB),1)
# MicroLIB
ARM_CC_OPTIONS += --library_type=microlib
ARM_ASM_OPTIONS += --library_type=microlib --pd "__MICROLIB SETA 1"
ARM_LINK_OPTIONS += --library_type=microlib
endif
ifeq ($(COMPILE_SMALLMUL),1)
# In Cortex-M0, small multiply takes 32 cycles
ARM_CC_OPTIONS += --multiply_latency=32
endif
# ---------------------------------------------------------------------------------------
# gcc options
GNG_CC = arm-none-eabi-gcc
GNU_OBJDUMP = arm-none-eabi-objdump
GNU_OBJCOPY = arm-none-eabi-objcopy
LINKER_SCRIPT_PATH = $(SOFTWARE_DIR)/common/scripts
LINKER_SCRIPT = $(LINKER_SCRIPT_PATH)/cmsdk_cm0.ld
GNU_CC_FLAGS = -g -O3 -mthumb $(CPU_TYPE)
ifeq ($(COMPILE_BIGEND),1)
# Big Endian
GNU_CC_FLAGS += -mbig-endian
endif
# ---------------------------------------------------------------------------------------
all: all_$(TOOL_CHAIN)
# ---------------------------------------------------------------------------------------
# DS-5
all_ds5 : $(TESTNAME).hex $(TESTNAME).lst $(TESTNAME).bin
$(TESTNAME).o : $(TESTNAME).c $(DEPS_LIST)
armcc $(ARM_CC_OPTIONS) $(CPU_TYPE) $< -o $@
dma_pl230_driver.o : $(SOFTWARE_DIR)/drivers/dma_pl230_driver.c $(DEPS_LIST)
armcc $(ARM_CC_OPTIONS) $(CPU_TYPE) $< -o $@
dataio_functions.o : dataio_functions.c dataio_functions.h $(DEPS_LIST)
armcc $(ARM_CC_OPTIONS) $(CPU_TYPE) $< -o $@
$(SYSTEM_FILE).o : $(DEVICE_DIR)/Source/$(SYSTEM_FILE).c $(DEPS_LIST)
armcc $(ARM_CC_OPTIONS) $(CPU_TYPE) $< -o $@
retarget.o : $(SOFTWARE_DIR)/common/retarget/retarget.c $(DEPS_LIST)
armcc $(ARM_CC_OPTIONS) $(CPU_TYPE) $< -o $@
uart_stdout.o : $(SOFTWARE_DIR)/common/retarget/uart_stdout.c $(DEPS_LIST)
armcc $(ARM_CC_OPTIONS) $(CPU_TYPE) $< -o $@
$(STARTUP_FILE).o : $(STARTUP_DIR)/$(STARTUP_FILE).s $(DEPS_LIST)
armasm $(ARM_ASM_OPTIONS) $(CPU_TYPE) $< -o $@
$(TESTNAME).ELF : $(TESTNAME).o $(SYSTEM_FILE).o $(STARTUP_FILE).o dataio_functions.o retarget.o uart_stdout.o
armlink $(ARM_LINK_OPTIONS) -o $@ $(TESTNAME).o $(SYSTEM_FILE).o $(STARTUP_FILE).o retarget.o uart_stdout.o dataio_functions.o
$(TESTNAME).hex : $(TESTNAME).ELF
fromelf --vhx --8x1 $< --output $@
$(TESTNAME).bin : $(TESTNAME).ELF
fromelf --bin $< --output $@
$(TESTNAME).lst : $(TESTNAME).ELF
fromelf -c -d -e -s -z -v $< --output $@
# ---------------------------------------------------------------------------------------
# gcc
all_gcc:
$(GNG_CC) $(GNU_CC_FLAGS) $(STARTUP_DIR)/$(STARTUP_FILE).s \
$(TESTNAME).c \
$(SOFTWARE_DIR)/common/retarget/retarget.c \
$(SOFTWARE_DIR)/common/retarget/uart_stdout.c \
$(DEVICE_DIR)/Source/$(SYSTEM_FILE).c \
-I $(DEVICE_DIR)/Include -I $(CORE_DIR) \
-I $(SOFTWARE_DIR)/common/retarget \
-I $(SOFTWARE_DIR)/drivers \
-L $(LINKER_SCRIPT_PATH) \
-D__STACK_SIZE=0x200 \
-D__HEAP_SIZE=0x1000 \
$(USER_DEFINE) -T $(LINKER_SCRIPT) -o $(TESTNAME).o
# Generate disassembly code
$(GNU_OBJDUMP) -S $(TESTNAME).o > $(TESTNAME).lst
# Generate binary file
$(GNU_OBJCOPY) -S $(TESTNAME).o -O binary $(TESTNAME).bin
# Generate hex file
$(GNU_OBJCOPY) -S $(TESTNAME).o -O verilog $(TESTNAME).hex
# Note:
# If the version of object copy you are using does not support verilog hex file output,
# you can generate the hex file from binary file using the following command
# od -v -A n -t x1 --width=1 $(TESTNAME).bin > $(TESTNAME).hex
# ---------------------------------------------------------------------------------------
# Keil MDK
all_keil:
@echo "Please compile your project code and press ENTER when ready"
@read dummy
# ---------------------------------------------------------------------------------------
# Binary
all_bin: $(TESTNAME).bin
# Generate hex file from binary
od -v -A n -t x1 --width=1 $(TESTNAME).bin > $(TESTNAME).hex
# ---------------------------------------------------------------------------------------
# Clean
clean :
@rm -rf *.o
@if [ -e $(TESTNAME).hex ] ; then \
rm -rf $(TESTNAME).hex ; \
fi
@if [ -e $(TESTNAME).lst ] ; then \
rm -rf $(TESTNAME).lst ; \
fi
@if [ -e $(TESTNAME).ELF ] ; then \
rm -rf $(TESTNAME).ELF ; \
fi
@if [ -e $(TESTNAME).bin ] ; then \
rm -rf $(TESTNAME).bin ; \
fi
@rm -rf *.crf
@rm -rf *.plg
@rm -rf *.tra
@rm -rf *.htm
@rm -rf *.map
@rm -rf *.dep
@rm -rf *.d
@rm -rf *.lnp
@rm -rf *.bak
@rm -rf *.lst
@rm -rf *.axf
@rm -rf *.sct
@rm -rf *.__i
@rm -rf *._ia
......@@ -24,7 +24,7 @@
unsigned int DataIO_enable(void) {
DATA_UART->CTRL = 0x00; // re-initialise/flush
// DATA_UART->CTRL = 0x00; // re-initialise/flush
DATA_UART->CTRL = UART_CTRL_TXRXEN; // enble TX and RX
return(0);
}
......
......@@ -520,7 +520,7 @@ F0
F9
00
F0
D2
D3
F8
00
20
......@@ -756,7 +756,7 @@ C0
B2
00
F0
36
37
F8
10
BD
......@@ -764,11 +764,11 @@ BD
B5
00
F0
41
42
F8
00
F0
30
31
F8
10
BD
......@@ -784,19 +784,19 @@ C0
B2
00
F0
28
29
F8
10
BD
FE
E7
27
28
48
00
21
81
60
27
28
49
01
61
......@@ -804,12 +804,14 @@ E7
21
81
60
26
27
48
03
F0
21
01
61
03
21
81
60
25
......@@ -822,11 +824,11 @@ E7
47
25
48
23
24
49
01
60
24
25
49
81
61
......@@ -850,13 +852,13 @@ D0
20
88
61
1A
1B
48
00
21
81
60
30
F0
21
01
61
......@@ -866,7 +868,7 @@ D0
60
70
47
16
17
49
8A
68
......@@ -898,7 +900,7 @@ F7
E7
0D
48
0E
0F
49
42
68
......@@ -951,6 +953,8 @@ FF
FE
E7
00
00
00
60
00
40
......@@ -978,15 +982,11 @@ E0
F4
00
00
21
48
00
21
81
60
20
49
03
21
81
20
88
60
00
20
......
This diff is collapsed.
......@@ -2492,7 +2492,7 @@ FA
20
00
F0
BC
BD
F9
00
20
......@@ -3272,7 +3272,7 @@ C0
B2
00
F0
36
37
F8
10
BD
......@@ -3280,11 +3280,11 @@ BD
B5
00
F0
42
43
F8
00
F0
30
31
F8
10
BD
......@@ -3300,7 +3300,7 @@ C0
B2
00
F0
28
29
F8
10
BD
......@@ -3322,13 +3322,15 @@ E7
60
27
48
03
F0
21
01
61
03
21
81
60
26
25
49
20
20
......@@ -3336,7 +3338,7 @@ E7
61
70
47
26
25
48
24
49
......@@ -3360,7 +3362,7 @@ C9
07
FC
D0
1E
1D
49
20
20
......@@ -3372,7 +3374,7 @@ D0
21
81
60
30
F0
21
01
61
......@@ -3400,7 +3402,7 @@ D1
60
70
47
11
10
4A
53
68
......@@ -3416,7 +3418,7 @@ D1
47
0D
4B
0F
0E
48
59
68
......@@ -3469,8 +3471,6 @@ FF
FE
E7
00
00
00
60
00
40
......
This diff is collapsed.
This diff is collapsed.