Call to arms | Teensy + SDRAM = true

Had not switched branches ... that does have an: extmem.c ???

... sorry hyper task swithing here a few minutes at a time ...

Getting lots of errors like I resolved for here yesterday ... using p#317 sketch ...
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp: In static member function 'static unsigned int SDRAM_t4::ns_to_clocks(float, float)':
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:9:20: error: 'ceilf' was not declared in this scope
9 | float clocks = ceilf(ns * 1.0e-9f * freq);
| ^~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp: In static member function 'static void SDRAM_t4::configure_sdram_pins()':
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:17:5: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_00' was not declared in this scope
17 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_00 = 0x0110F9; //SEMC_D0
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:26:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_01' was not declared in this scope
26 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_01 = 0x0110F9; //SEMC_D0
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:27:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_02' was not declared in this scope
27 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_02 = 0x0110F9; //SEMC_D1
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:28:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_03' was not declared in this scope
28 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_03 = 0x0110F9; //SEMC_D2
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:29:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_04' was not declared in this scope
29 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_04 = 0x0110F9; //SEMC_D3
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:30:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_05' was not declared in this scope
30 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_05 = 0x0110F9; //SEMC_D4
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:31:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_06' was not declared in this scope
31 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_06 = 0x0110F9; //SEMC_D5
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:32:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_07' was not declared in this scope
32 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_07 = 0x0110F9; //SEMC_D6
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:33:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_08' was not declared in this scope
33 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_08 = 0x0110F9; //SEMC_DMO
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:35:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_10' was not declared in this scope
35 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_10 = 0x0110F9; //SEMC_A1
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:36:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_11' was not declared in this scope
36 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_11 = 0x0110F9; //SEMC_A2
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:37:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_12' was not declared in this scope
37 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_12 = 0x0110F9; //SEMC_A3
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:38:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_13' was not declared in this scope
38 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_13 = 0x0110F9; //SEMC_A4
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:39:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_14' was not declared in this scope
39 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_14 = 0x0110F9; //SEMC_A5
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:40:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_15' was not declared in this scope
40 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_15 = 0x0110F9; //SEMC_A6
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:41:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_16' was not declared in this scope
41 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_16 = 0x0110F9; //SEMC_A7
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:42:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_17' was not declared in this scope
42 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_17 = 0x0110F9; //SEMC_A8
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:44:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_18' was not declared in this scope
44 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_18 = 0x0110F9; //SEMC_A9
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:45:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_19' was not declared in this scope
45 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_19 = 0x0110F9; //SEMC_A11
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:46:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_20' was not declared in this scope
46 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_20 = 0x0110F9; //SEMC_A12
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:47:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_21' was not declared in this scope
47 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_21 = 0x0110F9; //SEMC_BA0
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:48:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_22' was not declared in this scope
48 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_22 = 0x0110F9; //SEMC_BA1
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:49:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_23' was not declared in this scope
49 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_23 = 0x0110F9; //SEMC_A10
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:50:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_24' was not declared in this scope
50 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_24 = 0x0110F9; //SEMC_CAS
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:51:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_25' was not declared in this scope
51 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_25 = 0x0110F9; //SEMC_RAS
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:52:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_26' was not declared in this scope
52 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_26 = 0x0110F9; //SEMC_CLK
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:53:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_27' was not declared in this scope
53 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_27 = 0x0110F9; //SEMC_CKE
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:54:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_28' was not declared in this scope
54 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_28 = 0x0110F9; //SEMC_WE
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:55:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_29' was not declared in this scope
55 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_29 = 0x0110F9; //SEMC_CS0
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:56:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_30' was not declared in this scope
56 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_30 = 0x0110F9; //SEMC_D8
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:57:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_31' was not declared in this scope
57 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_31 = 0x0110F9; //SEMC_D9
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:58:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_32' was not declared in this scope
58 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_32 = 0x0110F9; //SEMC_D10
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:59:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_33' was not declared in this scope
59 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_33 = 0x0110F9; //SEMC_D11
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:60:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_34' was not declared in this scope
60 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_34 = 0x0110F9; //SEMC_D12
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:62:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_35' was not declared in this scope
62 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_35 = 0x0110F9; //SEMC_D13
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:63:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_36' was not declared in this scope
63 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_36 = 0x0110F9; //SEMC_D14
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:64:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_37' was not declared in this scope
64 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_37 = 0x0110F9; //SEMC_D15
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:65:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_38' was not declared in this scope
65 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_38 = 0x0110F9; //SEMC_DM1
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:66:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_39' was not declared in this scope
66 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_39 = 0x0110F9; //SEMC_DQS
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:67:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_40' was not declared in this scope
67 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_40 = 0x0110F9; //SEMC_MD0
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:68:9: error: 'IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_41' was not declared in this scope
68 | IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_41 = 0x0110F9; //SEMC_MD1
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:116:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_00' was not declared in this scope
116 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_00 = 0x10;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:117:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_01' was not declared in this scope
117 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_01 = 0x10;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:118:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_02' was not declared in this scope
118 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_02 = 0x10;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:119:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_03' was not declared in this scope
119 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_03 = 0x10;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:120:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_04' was not declared in this scope
120 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_04 = 0x10;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:121:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_05' was not declared in this scope
121 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_05 = 0x10;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:122:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_06' was not declared in this scope
122 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_06 = 0x10;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:123:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_07' was not declared in this scope
123 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_07 = 0x10;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:124:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_08' was not declared in this scope
124 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_08 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:125:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_09' was not declared in this scope
125 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_09 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:126:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_10' was not declared in this scope
126 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_10 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:127:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_11' was not declared in this scope
127 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_11 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:128:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_12' was not declared in this scope
128 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_12 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:129:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_13' was not declared in this scope
129 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_13 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:130:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_14' was not declared in this scope
130 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_14 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:131:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_15' was not declared in this scope
131 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_15 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:132:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_16' was not declared in this scope
132 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_16 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:133:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_17' was not declared in this scope
133 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_17 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:134:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_18' was not declared in this scope
134 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_18 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:135:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_19' was not declared in this scope
135 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_19 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:136:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_20' was not declared in this scope
136 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_20 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:137:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_21' was not declared in this scope
137 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_21 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:138:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_22' was not declared in this scope
138 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_22 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:139:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_23' was not declared in this scope
139 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_23 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:140:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_24' was not declared in this scope
140 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_24 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:141:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_25' was not declared in this scope
141 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_25 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:142:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_26' was not declared in this scope
142 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_26 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:143:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_27' was not declared in this scope
143 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_27 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:144:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_28' was not declared in this scope
144 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_28 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:145:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_29' was not declared in this scope
145 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_29 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:146:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_30' was not declared in this scope
146 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_30 = 0x10;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:147:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_31' was not declared in this scope
147 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_31 = 0x10;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:148:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_32' was not declared in this scope
148 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_32 = 0x10;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:149:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_33' was not declared in this scope
149 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_33 = 0x10;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:150:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_34' was not declared in this scope
150 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_34 = 0x10;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:151:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_35' was not declared in this scope
151 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_35 = 0x10;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:152:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_36' was not declared in this scope
152 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_36 = 0x10;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:153:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_37' was not declared in this scope
153 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_37 = 0x10;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:154:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_38' was not declared in this scope
154 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_38 = 0;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:155:3: error: 'IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_39' was not declared in this scope
155 | IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_39 = 0x10;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp: In static member function 'static bool SDRAM_t4::SendIPCommand(uint32_t, uint16_t, uint32_t, uint32_t*)':
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:166:5: error: 'SEMC_INTR' was not declared in this scope
166 | SEMC_INTR |= 0x1U;
| ^~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:168:5: error: 'SEMC_IPCR0' was not declared in this scope
168 | SEMC_IPCR0= address;
| ^~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:179:9: error: 'SEMC_IPTXDAT' was not declared in this scope
179 | SEMC_IPTXDAT = write;
| ^~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:183:5: error: 'SEMC_IPCMD' was not declared in this scope
183 | SEMC_IPCMD = command | (((uint32_t)(((uint32_t)(0xA55A)) << 16)) & 0xFFFF0000U);
| ^~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:196:17: error: 'SEMC_IPRXDAT' was not declared in this scope
196 | *read = SEMC_IPRXDAT;
| ^~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp: In static member function 'static bool SDRAM_t4::IPCommandComplete()':
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:205:14: error: 'SEMC_INTR' was not declared in this scope
205 | while (!(SEMC_INTR & 0x1))
| ^~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:210:5: error: 'SEMC_INTR' was not declared in this scope
210 | SEMC_INTR |= 0x1;
| ^~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp: In static member function 'static bool SDRAM_t4::begin(uint8_t)':
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:230:5: error: 'CCM_CBCDR' was not declared in this scope
230 | CCM_CBCDR = (CCM_CBCDR & ~(CCM_CBCDR_SEMC_PODF(7))) |
| ^~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:230:32: error: 'CCM_CBCDR_SEMC_PODF' was not declared in this scope
230 | CCM_CBCDR = (CCM_CBCDR & ~(CCM_CBCDR_SEMC_PODF(7))) |
| ^~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:231:9: error: 'CCM_CBCDR_SEMC_CLK_SEL' was not declared in this scope
231 | CCM_CBCDR_SEMC_CLK_SEL | CCM_CBCDR_SEMC_ALT_CLK_SEL |
| ^~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:231:34: error: 'CCM_CBCDR_SEMC_ALT_CLK_SEL' was not declared in this scope
231 | CCM_CBCDR_SEMC_CLK_SEL | CCM_CBCDR_SEMC_ALT_CLK_SEL |
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:243:5: error: 'delayMicroseconds' was not declared in this scope
243 | delayMicroseconds(1);
| ^~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:245:5: error: 'CCM_CCGR3' was not declared in this scope
245 | CCM_CCGR3 |= CCM_CCGR3_SEMC(CCM_CCGR_ON);
| ^~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:245:33: error: 'CCM_CCGR_ON' was not declared in this scope
245 | CCM_CCGR3 |= CCM_CCGR3_SEMC(CCM_CCGR_ON);
| ^~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:245:18: error: 'CCM_CCGR3_SEMC' was not declared in this scope
245 | CCM_CCGR3 |= CCM_CCGR3_SEMC(CCM_CCGR_ON);
| ^~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:248:5: error: 'SEMC_BR0' was not declared in this scope
248 | SEMC_BR0 = 0;
| ^~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:249:5: error: 'SEMC_BR1' was not declared in this scope
249 | SEMC_BR1 = 0;
| ^~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:250:5: error: 'SEMC_BR2' was not declared in this scope
250 | SEMC_BR2 = 0;
| ^~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:251:5: error: 'SEMC_BR3' was not declared in this scope
251 | SEMC_BR3 = 0;
| ^~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:252:5: error: 'SEMC_BR4' was not declared in this scope
252 | SEMC_BR4 = 0;
| ^~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:253:5: error: 'SEMC_BR5' was not declared in this scope
253 | SEMC_BR5 = 0;
| ^~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:254:5: error: 'SEMC_BR6' was not declared in this scope
254 | SEMC_BR6 = 0;
| ^~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:255:5: error: 'SEMC_BR7' was not declared in this scope
255 | SEMC_BR7 = 0;
| ^~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:256:5: error: 'SEMC_BR8' was not declared in this scope
256 | SEMC_BR8 = 0;
| ^~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:257:5: error: 'SEMC_MCR' was not declared in this scope
257 | SEMC_MCR = SEMC_MCR_SWRST;
| ^~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:257:16: error: 'SEMC_MCR_SWRST' was not declared in this scope
257 | SEMC_MCR = SEMC_MCR_SWRST;
| ^~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:258:5: error: 'elapsedMicros' was not declared in this scope
258 | elapsedMicros timeout = 0;
| ^~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:260:13: error: 'timeout' was not declared in this scope
260 | if (timeout > 1500) return false;
| ^~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:266:21: error: 'SEMC_MCR_MDIS' was not declared in this scope
266 | SEMC_MCR |= SEMC_MCR_MDIS | SEMC_MCR_CTO(0xFF) | SEMC_MCR_BTO(0x1F) | SEMC_MCR_DQSMD;
| ^~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:266:37: error: 'SEMC_MCR_CTO' was not declared in this scope
266 | SEMC_MCR |= SEMC_MCR_MDIS | SEMC_MCR_CTO(0xFF) | SEMC_MCR_BTO(0x1F) | SEMC_MCR_DQSMD;
| ^~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:266:58: error: 'SEMC_MCR_BTO' was not declared in this scope
266 | SEMC_MCR |= SEMC_MCR_MDIS | SEMC_MCR_CTO(0xFF) | SEMC_MCR_BTO(0x1F) | SEMC_MCR_DQSMD;
| ^~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:266:79: error: 'SEMC_MCR_DQSMD' was not declared in this scope
266 | SEMC_MCR |= SEMC_MCR_MDIS | SEMC_MCR_CTO(0xFF) | SEMC_MCR_BTO(0x1F) | SEMC_MCR_DQSMD;
| ^~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:273:5: error: 'SEMC_BMCR0' was not declared in this scope
273 | SEMC_BMCR0 = SEMC_BMCR0_WQOS(5) | SEMC_BMCR0_WAGE(8) |
| ^~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:273:18: error: 'SEMC_BMCR0_WQOS' was not declared in this scope
273 | SEMC_BMCR0 = SEMC_BMCR0_WQOS(5) | SEMC_BMCR0_WAGE(8) |
| ^~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:273:39: error: 'SEMC_BMCR0_WAGE' was not declared in this scope
273 | SEMC_BMCR0 = SEMC_BMCR0_WQOS(5) | SEMC_BMCR0_WAGE(8) |
| ^~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:274:9: error: 'SEMC_BMCR0_WSH' was not declared in this scope
274 | SEMC_BMCR0_WSH(0x40) | SEMC_BMCR0_WRWS(0x10);
| ^~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:274:32: error: 'SEMC_BMCR0_WRWS' was not declared in this scope
274 | SEMC_BMCR0_WSH(0x40) | SEMC_BMCR0_WRWS(0x10);
| ^~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:275:5: error: 'SEMC_BMCR1' was not declared in this scope
275 | SEMC_BMCR1 = SEMC_BMCR1_WQOS(5) | SEMC_BMCR1_WAGE(8) |
| ^~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:275:18: error: 'SEMC_BMCR1_WQOS' was not declared in this scope
275 | SEMC_BMCR1 = SEMC_BMCR1_WQOS(5) | SEMC_BMCR1_WAGE(8) |
| ^~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:275:39: error: 'SEMC_BMCR1_WAGE' was not declared in this scope
275 | SEMC_BMCR1 = SEMC_BMCR1_WQOS(5) | SEMC_BMCR1_WAGE(8) |
| ^~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:276:9: error: 'SEMC_BMCR1_WPH' was not declared in this scope
276 | SEMC_BMCR1_WPH(0x60) | SEMC_BMCR1_WRWS(0x24) | SEMC_BMCR1_WBR(0x40);
| ^~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:276:32: error: 'SEMC_BMCR1_WRWS' was not declared in this scope
276 | SEMC_BMCR1_WPH(0x60) | SEMC_BMCR1_WRWS(0x24) | SEMC_BMCR1_WBR(0x40);
| ^~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:276:56: error: 'SEMC_BMCR1_WBR' was not declared in this scope
276 | SEMC_BMCR1_WPH(0x60) | SEMC_BMCR1_WRWS(0x24) | SEMC_BMCR1_WBR(0x40);
| ^~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:281:29: error: 'SEMC_BR_MS' was not declared in this scope
281 | SEMC_BR0 = 0x90000000 | SEMC_BR_MS(13 /*13 = 32 Mbyte*/) | SEMC_BR_VLD;
| ^~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:281:64: error: 'SEMC_BR_VLD' was not declared in this scope
281 | SEMC_BR0 = 0x90000000 | SEMC_BR_MS(13 /*13 = 32 Mbyte*/) | SEMC_BR_VLD;
| ^~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:282:5: error: 'SEMC_SDRAMCR0' was not declared in this scope
282 | SEMC_SDRAMCR0 = SEMC_SDRAMCR0_CL(3) |
| ^~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:282:21: error: 'SEMC_SDRAMCR0_CL' was not declared in this scope
282 | SEMC_SDRAMCR0 = SEMC_SDRAMCR0_CL(3) |
| ^~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:283:9: error: 'SEMC_SDRAMCR0_COL' was not declared in this scope
283 | SEMC_SDRAMCR0_COL(3) | // 3 = 9 bit column
| ^~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:284:9: error: 'SEMC_SDRAMCR0_BL' was not declared in this scope
284 | SEMC_SDRAMCR0_BL(3) | // 3 = 8 word burst length
| ^~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:285:9: error: 'SEMC_SDRAMCR0_PS' was not declared in this scope
285 | SEMC_SDRAMCR0_PS; // use 16 bit data
| ^~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:286:5: error: 'SEMC_SDRAMCR1' was not declared in this scope
286 | SEMC_SDRAMCR1 =
| ^~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:287:9: error: 'SEMC_SDRAMCR1_ACT2PRE' was not declared in this scope
287 | SEMC_SDRAMCR1_ACT2PRE((ns_to_clocks(42, freq)-1)) | // tRAS: ACTIVE to PRECHARGE
| ^~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:288:9: error: 'SEMC_SDRAMCR1_CKEOFF' was not declared in this scope
288 | SEMC_SDRAMCR1_CKEOFF((ns_to_clocks(42, freq)-1)) | // self refresh
| ^~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:289:9: error: 'SEMC_SDRAMCR1_WRC' was not declared in this scope
289 | SEMC_SDRAMCR1_WRC((ns_to_clocks(12, freq)-1)) | // tWR: WRITE recovery
| ^~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:290:9: error: 'SEMC_SDRAMCR1_RFRC' was not declared in this scope
290 | SEMC_SDRAMCR1_RFRC((ns_to_clocks(67, freq)-1)) | // tRFC or tXSR: REFRESH recovery
| ^~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:291:9: error: 'SEMC_SDRAMCR1_ACT2RW' was not declared in this scope
291 | SEMC_SDRAMCR1_ACT2RW((ns_to_clocks(18, freq)-1)) | // tRCD: ACTIVE to READ/WRITE
| ^~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:292:9: error: 'SEMC_SDRAMCR1_PRE2ACT' was not declared in this scope
292 | SEMC_SDRAMCR1_PRE2ACT((ns_to_clocks(18, freq)-1)); // tRP: PRECHARGE to ACTIVE/REFRESH
| ^~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:293:5: error: 'SEMC_SDRAMCR2' was not declared in this scope
293 | SEMC_SDRAMCR2 = 0; // TODO... page 1425
| ^~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:294:5: error: 'SEMC_SDRAMCR3' was not declared in this scope
294 | SEMC_SDRAMCR3 = 0; // TODO...page 1426
| ^~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:296:9: error: 'SEMC_SDRAMCR2_SRRC' was not declared in this scope
296 | SEMC_SDRAMCR2_SRRC((ns_to_clocks(67, freq) - 1)) |
| ^~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:297:9: error: 'SEMC_SDRAMCR2_REF2REF' was not declared in this scope
297 | SEMC_SDRAMCR2_REF2REF(ns_to_clocks(60, freq)) | /* No Minus one to keep with RM */
| ^~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:298:9: error: 'SEMC_SDRAMCR2_ACT2ACT' was not declared in this scope
298 | SEMC_SDRAMCR2_ACT2ACT(ns_to_clocks(60, freq)) | /* No Minus one to keep with RM */
| ^~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:299:9: error: 'SEMC_SDRAMCR2_ITO' was not declared in this scope
299 | SEMC_SDRAMCR2_ITO(0); //sdk has: idle = config->tIdleTimeout_Ns / config->tPrescalePeriod_Ns
| ^~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:315:21: error: 'SEMC_SDRAMCR3_REBL' was not declared in this scope
315 | SEMC_SDRAMCR3 = SEMC_SDRAMCR3_REBL((1 - 1)) |
| ^~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:317:22: error: 'SEMC_SDRAMCR3_PRESCALE' was not declared in this scope
317 | SEMC_SDRAMCR3_PRESCALE(prescale) | SEMC_SDRAMCR3_RT(refresh) | SEMC_SDRAMCR3_UT(urgentRef);
| ^~~~~~~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:317:57: error: 'SEMC_SDRAMCR3_RT' was not declared in this scope
317 | SEMC_SDRAMCR3_PRESCALE(prescale) | SEMC_SDRAMCR3_RT(refresh) | SEMC_SDRAMCR3_UT(urgentRef);
| ^~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:317:85: error: 'SEMC_SDRAMCR3_UT' was not declared in this scope
317 | SEMC_SDRAMCR3_PRESCALE(prescale) | SEMC_SDRAMCR3_RT(refresh) | SEMC_SDRAMCR3_UT(urgentRef);
| ^~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:319:5: error: 'SEMC_IPCR1' was not declared in this scope
319 | SEMC_IPCR1 = 2; // IP commadns, data is 16 bits wide
| ^~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:320:5: error: 'SEMC_IPCR2' was not declared in this scope
320 | SEMC_IPCR2 = 0;
| ^~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:349:22: error: 'SEMC_SDRAMCR3_REN' was not declared in this scope
349 | SEMC_SDRAMCR3 |= SEMC_SDRAMCR3_REN;
| ^~~~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:353:23: warning: unused variable '_extsdram_start' [-Wunused-variable]
353 | unsigned long _extsdram_start = 0x90000000;
| ^~~~~~~~~~~~~~~
T:\T_Drive\tCode\libraries\SDRAM_t4\SDRAM_t4.cpp:354:23: warning: unused variable '_extsdram_end' [-Wunused-variable]
354 | unsigned long _extsdram_end = 0x90000000 + (32*1024*1024);
| ^~~~~~~~~~~~~
Using library SDRAM_t4 in folder: T:\T_Drive\tCode\libraries\SDRAM_t4 (legacy)
Error compiling for board Teensy MicroMod.
 
Looks like I did it again and forgot to hit the upload button after i did the local commit. Changes pushed and now available.
 
Looks like I did it again and forgot to hit the upload button after i did the local commit. Changes pushed and now available.
Not seeing anything new - or getting anything but above errors after Clean TD_1.59.4 install and : ,ld, (pjrc current CORES) startup.c, and imxrt.h:
1704581969214.png
 
Closer - No BUILD errors!

But something still a bit off. I saved your sketch above - and it got wiped in the last folder update since I don't have write permissions.

On my sketch now getting:
CrashReport:
A problem occurred at (system time) 17:0:56
Code was executing from address 0x41BE
CFSR: 82
(DACCVIOL) Data Access Violation
(MMARVALID) Accessed Address: 0x90000000
Temperature inside the chip was 45.17 °C
Startup CPU clock speed is 600MHz
Reboot was caused by auto reboot after fault or bad interrupt detected
My 5 minutes for this task is gone ... back in a bit ...
 
I wonder if someone should try some more strenuous DMA testing. The simple code that @mjs513 and myself setup yesterday was pretty simple, and only did some DMA writes to the ILI9488 (and I believe ILI9341) display. And nothing else was going on while that update was happening. I believe that Mike found that the DMA was not working out higher speeds.

Might be good if someone did something like what FrankB was doing with the ILI9341 and maybe read in the next frame while one frame is being displayed. I believe he updated the top half of the frame buffer when the bottom half was being output, likewise for lower half...

Or I believe when we were playing with the MicroMod we had code running that would receive data from camera and update the display.

Or maybe someone could implement a sketch that uses:
to read in the different images of an animated GIF and display them... Note several of our display examples we have used his decode of JPEG and PNG files to display on the screens. This would probably be similar.

Obviously even better if you actually implemented the eLCD...

Sorry, I know, just random thoughts.

Good luck
 
@Rezo is getting this DevBoard to work on the eLCD - so he'll have that in a week or so when @Dogbone06 gets the next boards.
He can speak to the use of DMA in his process? And if it does get used we'll know.

@KurtE - if you think it would be fun to play along you might get lucky by saying so ... just instigating ...

@Rezo has made a display board to mount on this footprint IIRC - and that is what he'll be working with.

Need to wash my hands - and then check that I got the right MPU settings in startup.c that could explain the earlier 'data access violation'
 
All is well with Standalone SDRAM_t4 on a TD 1.59 BETA5'ish clean install.
> indeed the startup.c from CORES still had 0x8---- addresses in not the needed 0x9----
> then adding the edited imxrt_tmm.ld

This is working with @mjs513 updated alternate github branch:
SUCCESS sdram.init()

SerBArr[0][0] at 0x9000000c
SerBArr[0][1] at 0x90006024
SerBArr[0][2] at 0x9000c03c
SerBArr[1][0] at 0x90012054
SerBArr[1][1] at 0x9001806c
SerBArr[1][2] at 0x9001e084
SerBArr[2][0] at 0x9002409c
SerBArr[2][1] at 0x9002a0b4
SerBArr[2][2] at 0x900300cc
SerBArr[3][0] at 0x900360e4
SerBArr[3][1] at 0x9003c0fc
SerBArr[3][2] at 0x90042114
SerBArr[4][0] at 0x9004812c
SerBArr[4][1] at 0x9004e144
SerBArr[4][2] at 0x9005415c
Compile Time:: C:\Users\TimLabs\Documents\GitHub\EVKB_1060\mallocSDRAM - Copy\SDRAMdb_t4\examples\UART_extmem_ARR\UART_extmem_ARR.ino Jan 6 2024 18:29:25


SETUP Serial2 Here 587 #B:0 #ERR:0 /s=0 B/s=0 MEM=sdram_malloc db
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr

SETUP Serial1 Here 584 #B:0 #ERR:0 /s=0 B/s=0 MEM=sdram_malloc db
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr

SETUP Serial6 Here 592 #B:0 #ERR:0 /s=0 B/s=0 MEM=sdram_malloc db
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr

SETUP Serial4 Here 589 #B:0 #ERR:0 /s=0 B/s=0 MEM=sdram_malloc db
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr

SETUP Serial5 Here 596 #B:0 #ERR:0 /s=0 B/s=0 MEM=sdram_malloc db
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr
 
I posted code a while ago that uses the eLCDIF to generate VGA output (using 4-bit color via an R2R ladder): https://forum.pjrc.com/index.php?threads/teensy4-lcdif-sample.72657/#post-324741
It uses double-buffering but one frame has to be in RAM1 and the other in RAM2 due to size limitations....

I also made more or less the same thing using FlexIO: https://forum.pjrc.com/index.php?threads/vga-output-via-flexio-teensy4.72710/#post-326842
This is more flexible and uses explicit DMA, to do things like line-doubling. It could also do higher resolutions with more memory available.
 
Quick demo of malloc() versus sdram_malloc():
>> Pulled the code - it fails on true MicroMod ... needs NULL check somewhere ???
- all the RAM2 will be gone - should get 0/Null ptr?
 
Last edited:
Quick demo of malloc() versus sdram_malloc():
>> Pulled the code - it fails on true MicroMod ... needs NULL check somewhere ???
- all the RAM2 will be gone - should get 0/Null ptr?
Looking at return the sdram_malloc() on true T_MM thinks it has SDRAM when it does not - it is not calling malloc() - but returning SDRAM address space pointers and .begin succeeds?
SUCCESS sdram.begin()
---- MALLOC fallthrough return: 0x9000000c
---- MALLOC fallthrough return: 0x90020028
---- MALLOC fallthrough return: 0x9000000c

Seems SDRAM_t4.cpp::bool SDRAM_t4::SendIPCommand() never returns False with T_MM on DataLogger carrier.
 
Last edited:
I just pushed up a few examples
Looking at return the sdram_malloc() on true T_MM thinks it has SDRAM when it does not - it is not calling malloc() - but returning SDRAM address space pointers and .begin succeeds?
Yeah which is scary. Just tested it on a T4.1 and it hangs it - looses it.

On a Micromod
Code:
command: f
ReadCMD: 0
WrteCMD: 0
IPCommand Complete True
Command returning true
command: c
ReadCMD: 0
WrteCMD: 0
IPCommand Complete True
Command returning true
command: c
ReadCMD: 0
WrteCMD: 0
IPCommand Complete True
Command returning true
command: a
ReadCMD: 0
WrteCMD: 1
IPCommand Complete True
Command returning true
Enter number of elements: 5
Memory successfully allocated using calloc.
The elements of the array are: 1, 2, 3, 4, 5,

Enter the new size of the array: 10
Memory successfully re-allocated using realloc.
The elements of the array are: 1, 0x9000000c 2, 0x90000010 3, 0x90000014 4, 0x90000018 5, 0x9000001c 6, 0x90000020 7, 0x90000024 8, 0x90000028 9, 0x9000002c 10, 0x90000030

When I looked at the datasheet for the SDRAM I didn't see a who am i register to identify the chip so not sure what to do
 
@PaulStoffregen = @defragster
Think I may have a way around it.
If I run the SDRAM_test that I just posted (equivalent to the PSRAM Test) it shows the error

Code:
testing with fixed pattern 5A698421
 Error at 90000000, read 00000000 but expected 5A698421
So will probably include a test like that in sdram.c

UPDATE: Ok added in a test and it worked. Now guess I have to do something to zero out SDRAM and work on the readme :)
 
Last edited:
I was wondering if the chip had an ident like for the littlefs devices to ask before going ahead with pinChanges and other.
Will any of those pin changes undo the few T_MM pins under the SDRAM?

That was the thought here that a quick safe content seems the only way to revert to malloc() as long as the pinChanges didn't corrupt any initial pin settings in analog_init(); or pwm_init(); ?

Perhaps a user should abort when no SDRAM after trying the .begin if the changes affect other Arduino named pin function? Of course just not using on those without SDRAM seems easy enough.
 
Here’s my thought. If a teensy doesn’t have a sdram they shouldn’t be incorporating the library to begin with. Remember this is a library and not part of the core.

As conflict with tmm could be but don’t think core will be officially changed to support the dev board. We would have to do it locally.

Can’t even put a ifdef on a board because we don’t have a teensy version that supports sdram.

Maybe Paul needs to address the issue about the pin changes.
 
@mjs513 - seems all your changes may not have propagated again? I had to add the pattern test to the class and then it isn't working to detect on real MicroMod ... but does fail over when SDRAM exhauted on DevBoard:
class SDRAM_t4 {
public:
constexpr SDRAM_t4() { };
static bool begin(uint8_t external_sdram_size = 32);
static bool check_fixed_pattern(uint32_t pattern);
From pulled test code on DevBoard where some RAM2 remained it got allocated:
...
---- MALLOC fallthrough return: 0x91fc1bd4
---- MALLOC fallthrough return: 0x20223090
SUCCESS SDRAM malloc
SUCCESS SDRAM 256 * 128KB initialized

1 RAM2/DMAMEM compares of 1
256 SDRAM compares of 256
Addr reference: RAM1/DTCM @0x20002258 : RAM2/DMAMEM @0x20203088 : SDRAM @0x9000000c
Complete
On the MicroMod with went to fault.
 
Agreed, SDRAM_t4 is for people who have made custom hardware. They know which chip is on their board.

Of course you should write whatever code you feel is interesting or fun. If you want to implement special hardware detection, don't let me talk you out of doing something you're interested to do.

But if you're looking to wrap this up without spending a lot more time and you want my opinion, besides my feedback in msg #307 (much of it already done), I'm really hoping you'll eventually publish on the main branch.


Maybe Paul needs to address the issue about the pin changes.

I consider changing pin mapping to be a separate matter concerning all custom boards, only coincidentally related to SDRAM. Of the many things I might do, this one is a pretty low priority which for all practical purposes means I'm unlikely do to anything with it soon.
 
Sounds good here as it isn't a PJRC product issue. Just went to test that simple sketch that seemed would be safe and then it went so wrong crossing into known failure case.
 
@defragster
That sketch is outdated. New example sketches created:
Screenshot 2024-01-08 073301.png


If you run the SDRAM_MALLOC sketch (equivalent to the simple_alloc.ino file) its working fine for me.

Code:
Entered number of elements: 24
Memory successfully allocated using malloc.
The elements of the array are: 1, 9000000c
2, 90000010
3, 90000014
4, 90000018
5, 9000001c
6, 90000020
7, 90000024
8, 90000028
9, 9000002c
10, 90000030
11, 90000034
12, 90000038
13, 9000003c
14, 90000040
15, 90000044
16, 90000048
17, 9000004c
18, 90000050
19, 90000054
20, 90000058
21, 9000005c
22, 90000060
23, 90000064
24, 90000068

Try running SDRAM_test (equivalent to memtest) - that had to be updated. That works for me as well.
 
Was there a switch back to Main branch? CROSSPOST ...
ReadMe.md said I changed and merge conflict resolution confused it ....

Still getting error with the MultiRamCmp example - may be on old branch to see?
Starting
SUCCESS RAM1/DTCM initialized

SUCCESS RAM2/DMAMEM malloc
SUCCESS DMA 1 * 128KB initialized

FAILED sdram.begin() : will default to RAM2 malloc()

---- MALLOC fallthrough return: 0x9000000c

---- MALLOC fallthrough return: 0x9000000c

---- MALLOC fallthrough return: 0x90020028

---- MALLOC fallthrough return: 0x9000000c

---- MALLOC fallthrough return: 0x9000000c

---- MALLOC fallthrough return: 0x90020028
SUCCESS SDRAM malloc
SUCCESS SDRAM 6 * 128KB initialized

1 RAM2/DMAMEM compares of 1CrashReport:
A problem occurred at (system time) 4:27:45
Code was executing from address 0xD22
CFSR: 82
(DACCVIOL) Data Access Violation
(MMARVALID) Accessed Address: 0x0 (nullptr)
Check code at 0xD22 - very likely a bug!
Run "addr2line -e mysketch.ino.elf 0xD22" for filename & line number.
Temperature inside the chip was 55.80 °C
Startup CPU clock speed is 600MHz
Reboot was caused by auto reboot after fault or bad interrupt detected

Zzzzzz's
 
Yeah I just switched to main branch and I resolved the merge issue when I incorporated the PR.

"MultiRamCmp" example - where is that?

EDIT: of found it - you must have just pushed it? otherwise it would have been up on main.
 
Back
Top