?login_element?

Subversion Repositories NedoOS

Rev

Rev 8 | Blame | Compare with Previous | Last modification | View Log | Download

  1.  
  2. #ifndef __RAM_FUNCTIONS_C
  3. #define __RAM_FUNCTIONS_C
  4.  
  5. #include "opora.h"
  6. #include "RamFunctions.h"
  7.  
  8. void CallRAM(uint32_t address)
  9. {
  10.         //unsigned char * ptr;
  11.         //ptr=(uint32_t*)address;
  12.         PORTE->CLRTX=0x40;
  13.         ((void(*)(void))(address))();
  14.         PORTE->SETTX=0x40;
  15. }
  16.  
  17. //╘єэъЎш  фы  чряшёш юфэюую срщЄр фрээ√ї т ╬╟╙
  18. //╧рЁрьхЄЁ√ address - рфЁхё, ё ъюЄюЁюую эхюсїюфшью чряшё√трЄ№ фрээ√х т ╬╟╙
  19. //┬ючтЁр∙рхь√ї чэрўхэшщ эхЄ
  20. void WriteByteToRAM(uint32_t address, unsigned char b)
  21. {
  22.         unsigned char * ptr = (unsigned char *)address;
  23.         PORTE->CLRTX=0x40;
  24.         *ptr = b;
  25.         PORTE->SETTX=0x40;
  26. }
  27.  
  28. //╘єэъЎш  фы  чряшёш фрээ√ї юЄ 0 фю 0x3FFFF т ╬╟╙
  29. //╧рЁрьхЄЁ√ address - рфЁхё, ё ъюЄюЁюую эхюсїюфшью чряшё√трЄ№ фрээ√х т ╬╟╙
  30. //                      inv - Їыру чряшёш шэтхЁёэюую чэрўхэш  т ярь Є№ ╬╟╙
  31. //┬ючтЁр∙рхь√ї чэрўхэшщ эхЄ
  32. void WriteDataToRAM(uint32_t address, uint32_t inv)
  33. {
  34.         uint32_t*       ptr;
  35.         uint32_t        tmp;
  36.  
  37.         ptr=(uint32_t*)address;
  38.  
  39.         PORTE->CLRTX=0x40;
  40.  
  41.         if(!inv)
  42.                 for(tmp=0;tmp<0x40000;tmp++)    {
  43.                         *ptr++ =tmp;
  44.                 }
  45.         else
  46.                 for(tmp=0;tmp<0x40000;tmp++)    {
  47.                         *ptr++ =(~tmp);
  48.                 }
  49.  
  50.         PORTE->SETTX=0x40;
  51. }
  52.  
  53. //╘єэъЎш  фы  яЁютхЁъш чряшёрээ√ї фрээ√ї т ╬╟╙
  54. //╧рЁрьхЄЁ√ address - рфЁхё, ё ъюЄюЁюую эхюсїюфшью ЄхёЄшЁютрЄ№ фрээ√х т ╬╟╙
  55. //                      inv - Їыру яЁютхЁъш шэтхЁёэ√ї чэрўхэшщ т ярь Єш ╬╟╙
  56. //┬ючтЁр∙рхьюх чэрўхэшх:        0 - фрээ√х т ярь Єш юЄышўр■Єё  юЄ чряшёрээ√ї
  57. //                                                      1 - тёх фрээ√х т ярь Єш ёютярфр■Є ё чряшёрээ√ьш
  58. uint32_t TestData(uint32_t address, uint32_t inv)
  59. {
  60.         uint32_t *ptr, tmp, data, res;
  61.  
  62.         ptr=(uint32_t*)address;
  63.  
  64.         PORTE->CLRTX=0x40;
  65.         res=1;
  66.  
  67.         if(!inv)
  68.         {
  69.                 for(tmp=0;tmp<0x40000;tmp++)
  70.                 {
  71.                         data=*ptr++;
  72.                         if(data!=tmp)
  73.                         {
  74.                                 res=0;
  75.                                 break;
  76.                         }
  77.                 }
  78.         }
  79.         else
  80.         {
  81.                 for(tmp=0;tmp<0x40000;tmp++)
  82.                 {
  83.                         data=*ptr++;
  84.                         if(data!=(~tmp))
  85.                         {
  86.                                 res=0;
  87.                                 break;
  88.                         }
  89.                 }
  90.         }
  91.  
  92.         PORTE->SETTX=0x40;
  93.         return res;
  94. }
  95.  
  96.  
  97. #endif  //__RAM_FUNCTIONS_C
  98.  
  99.