16+
Воскресенье
22 июля
Вход |Карта сайта | |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

ARM-контроллеры

 
   Новая тема Правила Регистрация Поиск »» Архив
Вернуться в конференциюТопик полностью
michas  (04.01.2018 19:41) , в ответ на Где и что компилятор сует в ОЗУ? Если ему не мешать (всякими -O0 и т.п.), то все прекрасно разместит в РОН. Результат вернется в R0. автор: a3r3
Убрал отключение оптимизации 
Осталось ;;;217 result_TR55 = count_err; 000076 9100 STR r1,[sp,#0] И да, он фактически кладет счетчик по этому адресу в ОЗУ.
;;;166    void RamTest(void)	
000000  b50f              PUSH     {r0-r3,lr}
;;;167    {
;;;168    		register uint32_t addres_ram;
;;;169    		register uint32_t count_err;
;;;170    	
;;;171        register volatile uint32_t result_T1;
;;;172        register volatile uint32_t result_T0;
;;;173        register volatile uint32_t result_TRAA;
;;;174        register volatile uint32_t result_TR55;
;;;175    	
;;;176    //		#pragma push
;;;177    //		#pragma O0
;;;178    //		#pragma Otime
;;;179    			
;;;180    	  for (addres_ram = STRT_ADDR_RAM; addres_ram < STRT_ADDR_RAM + SIZE_RAM; addres_ram++)
000002  f04f5000          MOV      r0,#0x20000000
000006  e002              B        |L1.14|
                  |L1.8|
;;;181        {
;;;182            *(__IO uint8_t*)addres_ram = 0x00;
000008  2200              MOVS     r2,#0
00000a  7002              STRB     r2,[r0,#0]
00000c  1c40              ADDS     r0,r0,#1              ;180
                  |L1.14|
00000e  4a25              LDR      r2,|L1.164|
000010  4290              CMP      r0,r2                 ;180
000012  d3f9              BCC      |L1.8|
;;;183        } 		
;;;184    		for (addres_ram = STRT_ADDR_RAM; addres_ram < STRT_ADDR_RAM + SIZE_RAM; addres_ram++)
000014  03d0              LSLS     r0,r2,#15
000016  e003              B        |L1.32|
                  |L1.24|
;;;185        {
;;;186            if ((*(__IO uint8_t*)addres_ram) != 0x00){
000018  7802              LDRB     r2,[r0,#0]
00001a  b102              CBZ      r2,|L1.30|
;;;187    						count_err++;
00001c  1c49              ADDS     r1,r1,#1
                  |L1.30|
00001e  1c40              ADDS     r0,r0,#1              ;184
                  |L1.32|
000020  4a20              LDR      r2,|L1.164|
000022  4290              CMP      r0,r2                 ;184
000024  d3f8              BCC      |L1.24|
;;;188    				}
;;;189        }		
;;;190    		result_T0 = count_err;
000026  9102              STR      r1,[sp,#8]
;;;191    		count_err = 0;
000028  2100              MOVS     r1,#0
;;;192    		
;;;193    		for (addres_ram = STRT_ADDR_RAM; addres_ram < STRT_ADDR_RAM + SIZE_RAM; addres_ram++)
00002a  03d0              LSLS     r0,r2,#15
00002c  e002              B        |L1.52|
                  |L1.46|
;;;194        {
;;;195            *(__IO uint8_t*)addres_ram = 0xFF;
00002e  22ff              MOVS     r2,#0xff
000030  7002              STRB     r2,[r0,#0]
000032  1c40              ADDS     r0,r0,#1              ;193
                  |L1.52|
000034  4a1b              LDR      r2,|L1.164|
000036  4290              CMP      r0,r2                 ;193
000038  d3f9              BCC      |L1.46|
;;;196        } 
;;;197    		for (addres_ram = STRT_ADDR_RAM; addres_ram < STRT_ADDR_RAM + SIZE_RAM; addres_ram++)
00003a  03d0              LSLS     r0,r2,#15
00003c  e004              B        |L1.72|
                  |L1.62|
;;;198        {
;;;199            if ((*(__IO uint8_t*)addres_ram) != 0xFF){
00003e  7802              LDRB     r2,[r0,#0]
000040  2aff              CMP      r2,#0xff
000042  d000              BEQ      |L1.70|
;;;200    						count_err++;
000044  1c49              ADDS     r1,r1,#1
                  |L1.70|
000046  1c40              ADDS     r0,r0,#1              ;197
                  |L1.72|
000048  4a16              LDR      r2,|L1.164|
00004a  4290              CMP      r0,r2                 ;197
00004c  d3f7              BCC      |L1.62|
;;;201    				}
;;;202        }				
;;;203    		result_T1 = count_err;
00004e  9103              STR      r1,[sp,#0xc]
;;;204    		count_err = 0;
000050  2100              MOVS     r1,#0
;;;205    
;;;206    	  for (addres_ram = STRT_ADDR_RAM; addres_ram < STRT_ADDR_RAM + SIZE_RAM; addres_ram++)
000052  03d0              LSLS     r0,r2,#15
000054  e002              B        |L1.92|
                  |L1.86|
;;;207        {
;;;208            *(__IO uint8_t*)addres_ram = 0x55;
000056  2255              MOVS     r2,#0x55
000058  7002              STRB     r2,[r0,#0]
00005a  1c40              ADDS     r0,r0,#1              ;206
                  |L1.92|
00005c  4a11              LDR      r2,|L1.164|
00005e  4290              CMP      r0,r2                 ;206
000060  d3f9              BCC      |L1.86|
;;;209        } 
;;;210    
;;;211    		for (addres_ram = STRT_ADDR_RAM; addres_ram < STRT_ADDR_RAM + SIZE_RAM; addres_ram++)
000062  03d0              LSLS     r0,r2,#15
000064  e004              B        |L1.112|
                  |L1.102|
;;;212        {
;;;213            if ((*(__IO uint8_t*)addres_ram) != 0x56){
000066  7802              LDRB     r2,[r0,#0]
000068  2a56              CMP      r2,#0x56
00006a  d000              BEQ      |L1.110|
;;;214    						count_err++;
00006c  1c49              ADDS     r1,r1,#1
                  |L1.110|
00006e  1c40              ADDS     r0,r0,#1              ;211
                  |L1.112|
000070  4a0c              LDR      r2,|L1.164|
000072  4290              CMP      r0,r2                 ;211
000074  d3f7              BCC      |L1.102|
;;;215    				}
;;;216        }				
;;;217    		result_TR55 = count_err;
000076  9100              STR      r1,[sp,#0]
;;;218    		count_err = 0;
000078  2100              MOVS     r1,#0
;;;219    
;;;220    
;;;221    	  for (addres_ram = STRT_ADDR_RAM; addres_ram < STRT_ADDR_RAM + SIZE_RAM; addres_ram++)
00007a  03d0              LSLS     r0,r2,#15
00007c  e002              B        |L1.132|
                  |L1.126|
;;;222        {
;;;223            *(__IO uint8_t*)addres_ram = 0xAA;
00007e  22aa              MOVS     r2,#0xaa
000080  7002              STRB     r2,[r0,#0]
000082  1c40              ADDS     r0,r0,#1              ;221
                  |L1.132|
000084  4a07              LDR      r2,|L1.164|
000086  4290              CMP      r0,r2                 ;221
000088  d3f9              BCC      |L1.126|
;;;224        }
;;;225    		for (addres_ram = STRT_ADDR_RAM; addres_ram < STRT_ADDR_RAM + SIZE_RAM; addres_ram++)
00008a  03d0              LSLS     r0,r2,#15
00008c  e004              B        |L1.152|
                  |L1.142|
;;;226        {
;;;227            if ((*(__IO uint8_t*)addres_ram) != 0xAA){
00008e  7802              LDRB     r2,[r0,#0]
000090  2aaa              CMP      r2,#0xaa
000092  d000              BEQ      |L1.150|
;;;228    						count_err++;
000094  1c49              ADDS     r1,r1,#1
                  |L1.150|
000096  1c40              ADDS     r0,r0,#1              ;225
                  |L1.152|
000098  4a02              LDR      r2,|L1.164|
00009a  4290              CMP      r0,r2                 ;225
00009c  d3f7              BCC      |L1.142|
;;;229    				}
;;;230        }				
;;;231    		result_TRAA = count_err;
00009e  9101              STR      r1,[sp,#4]
;;;232    		count_err = 0;
0000a0  2100              MOVS     r1,#0
;;;233    		
;;;234    //		#pragma pop		
;;;235    }
0000a2  bd0f              POP      {r0-r3,pc}
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7526 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXVIII