STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 7383
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Это я знаю. И так и делаю. Простой вопрос - как установить, используя HAL, source, destination и count для DMA. Хотя бы destination aka CPAR соответствующего канала, так как есть надежда что HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef * htim, uint32_t * pData, uint16_t Length) выполнит два из трёх желаний.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Реклама
Мудрый кот
Сообщения: 1846
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="dosikus",url="/forum/viewtopic.php?p=3457382#p3457382"]Например так .

Код: Выделить всё

#define  DMA1_Channel_X DMA1_Channel3

DMA1_Channel_X->CCR  |=  DMA_CCR_MSIZE_0;         // Memory size 16 bit
DMA1_Channel_X->CCR  |=  DMA_CCR_PSIZE_0;         // Peripheral size 16 bit

DMA1_Channel_X->CCR  |=  DMA_CCR_PL_1;            // Channel Priority level High 
DMA1_Channel_X->CCR  |=  DMA_CCR_MINC;            // Memory increment mode 
DMA1_Channel_X->CCR  |=  DMA_CCR_CIRC;            // Circular mode
DMA1_Channel_X->CCR  |=  DMA_CCR_DIR;             // Data transfer direction Memory -> Peripheral
[/uquote]
Никогда не понимал - на кой для каждого битового поля делать отдельное чтение-модификация-запись (LDR/ORR/STR) вместо просто записи всего слова сразу? :dont_know:

Без всяких калокубов и прочей хрени (STM32F429):
Спойлер

Код: Выделить всё

//csl.h (Chip Support Layer)
//------------
//DMA channel assignments
#define DMAREQ_S0_SPI3_RX       0
#define DMAREQ_S0_I2C1_RX       1
#define DMAREQ_S0_TIM4_CH1      2
#define DMAREQ_S0_I2S3_EXT_RX   3
#define DMAREQ_S0_UART5_RX      4
#define DMAREQ_S0_UART8_TX      5
#define DMAREQ_S0_TIM5_CH3      6
#define DMAREQ_S0_TIM5_UP       6
#define DMAREQ_S1_TIM2_CH3      3
#define DMAREQ_S1_TIM2_UP       3
#define DMAREQ_S1_UART3_RX      4
#define DMAREQ_S1_UART7_TX      5
#define DMAREQ_S1_TIM5_CH4      6
#define DMAREQ_S1_TIM5_TRIG     6
#define DMAREQ_S1_TIM6_UP       7
#define DMAREQ_S2_SPI3_RX       0
#define DMAREQ_S2_TIM7_UP       1
#define DMAREQ_S2_I2S3_EXT_RX   2
#define DMAREQ_S2_I2C3_RX       3
#define DMAREQ_S2_UART4_RX      4
#define DMAREQ_S2_TIM3_CH4      5
#define DMAREQ_S2_TIM3_UP       5
#define DMAREQ_S2_TIM5_CH1      6
#define DMAREQ_S2_I2C2_RX       7
#define DMAREQ_S3_SPI2_RX       0
#define DMAREQ_S3_TIM4_CH2      2
#define DMAREQ_S3_I2S2_EXT_RX   3
#define DMAREQ_S3_UART3_TX      4
#define DMAREQ_S3_UART7_RX      5
#define DMAREQ_S3_TIM5_CH4      6
#define DMAREQ_S3_TIM5_TRIG     6
#define DMAREQ_S3_I2C2_RX       7
#define DMAREQ_S4_SPI2_TX       0
#define DMAREQ_S4_TIM7_UP       1
#define DMAREQ_S4_I2S2_EXT_TX   2
#define DMAREQ_S4_I2C3_TX       3
#define DMAREQ_S4_UART4_TX      4
#define DMAREQ_S4_TIM3_CH1      5
#define DMAREQ_S4_TIM3_TRIG     5
#define DMAREQ_S4_TIM5_CH2      6
#define DMAREQ_S4_UART3_TX      7
#define DMAREQ_S5_SPI3_TX       0
#define DMAREQ_S5_I2C1_RX       1
#define DMAREQ_S5_I2S3_EXT_TX   2
#define DMAREQ_S5_TIM2_CH1      3
#define DMAREQ_S5_UART2_RX      4
#define DMAREQ_S5_TIM3_CH2      5
#define DMAREQ_S5_DAC0          7
#define DMAREQ_S6_I2C1_TX       1
#define DMAREQ_S6_TIM4_UP       2
#define DMAREQ_S6_TIM2_CH2      3
#define DMAREQ_S6_TIM2_CH4      3
#define DMAREQ_S6_UART2_TX      4
#define DMAREQ_S6_UART8_RX      5
#define DMAREQ_S6_TIM5_UP       6
#define DMAREQ_S6_DAC1          7
#define DMAREQ_S7_SPI3_TX       0
#define DMAREQ_S7_I2C1_TX       1
#define DMAREQ_S7_TIM4_CH3      2
#define DMAREQ_S7_TIM2_CH4      3
#define DMAREQ_S7_TIM2_UP       3
#define DMAREQ_S7_UART5_TX      4
#define DMAREQ_S7_TIM3_CH3      5
#define DMAREQ_S7_I2C2_TX       7
#define DMAREQ_S8_ADC1          0
#define DMAREQ_S8_ADC3          2
#define DMAREQ_S8_SPI1_RX       3
#define DMAREQ_S8_SPI4_RX       4
#define DMAREQ_S8_TIM1_TRIG     6
#define DMAREQ_S9_SAI1_A        0
#define DMAREQ_S9_DCMI          1
#define DMAREQ_S9_ADC3          2
#define DMAREQ_S9_SPI4_TX       4
#define DMAREQ_S9_UART6_RX      5
#define DMAREQ_S9_TIM1_CH1      6
#define DMAREQ_S9_TIM8_UP       7
#define DMAREQ_S10_TIM8_CH1     0
#define DMAREQ_S10_TIM8_CH2     0
#define DMAREQ_S10_TIM8_CH3     0
#define DMAREQ_S10_ADC2         1
#define DMAREQ_S10_SPI1_RX      3
#define DMAREQ_S10_UART1_RX     4
#define DMAREQ_S10_UART6_RX     5
#define DMAREQ_S10_TIM1_CH2     6
//#define DMAREQ_S10_TIM8_CH1     7
#define DMAREQ_S11_SAI1_A       0
#define DMAREQ_S11_ADC2         1
#define DMAREQ_S11_SPI5_RX      2
#define DMAREQ_S11_SPI1_TX      3
#define DMAREQ_S11_SDIO         4
#define DMAREQ_S11_SPI4_RX      5
#define DMAREQ_S11_TIM1_CH1     6
#define DMAREQ_S11_TIM8_CH2     7
#define DMAREQ_S12_ADC1         0
#define DMAREQ_S12_SAI1_B       1
#define DMAREQ_S12_SPI5_TX      2
#define DMAREQ_S12_SPI4_TX      5
#define DMAREQ_S12_TIM1_CH4     6
#define DMAREQ_S12_TIM1_TRIG    6
#define DMAREQ_S12_TIM1_COM     6
#define DMAREQ_S12_TIM8_CH3     7
#define DMAREQ_S13_SAI1_B       0
#define DMAREQ_S13_SPI6_TX      1
#define DMAREQ_S13_CRYP_OUT     2
#define DMAREQ_S13_SPI1_TX      3
#define DMAREQ_S13_UART1_RX     4
#define DMAREQ_S13_TIM1_UP      6
#define DMAREQ_S13_SPI5_RX      7
#define DMAREQ_S14_TIM1_CH1     0
#define DMAREQ_S14_TIM1_CH2     0
#define DMAREQ_S14_TIM1_CH3     0
#define DMAREQ_S14_SPI6_RX      1
#define DMAREQ_S14_CRYP_IN      2
#define DMAREQ_S14_SDIO         4
#define DMAREQ_S14_UART6_TX     5
//#define DMAREQ_S14_TIM1_CH3     6
#define DMAREQ_S14_SPI5_TX      7
#define DMAREQ_S15_DCMI         1
#define DMAREQ_S15_HASH_IN      2
#define DMAREQ_S15_UART1_TX     4
#define DMAREQ_S15_UART6_TX     5
#define DMAREQ_S15_TIM8_CH4     7
#define DMAREQ_S15_TIM8_TRIG    7
#define DMAREQ_S15_TIM8_COM     7

//board.h (распределение ресурсов платы)
//---------------------------------
//Распределение DMA-stream-ов
#define nDMASTR_UART1_TX     15
#define nDMASTR_UART1_RX     10
#define nDMASTR_UART5_TX     7
#define nDMASTR_UART5_RX     0
#define nDMASTR_UART6_TX     14
#define nDMASTR_UART6_RX     9
#define nDMASTR_SPI5_TX      12
#define nDMASTR_SPI5_RX      11
#define nDMASTR_SPI1_TX      13
#define nDMASTR_SPI1_RX      8
#define nDMASTR_I2C3_TX      4
#define nDMASTR_I2C3_RX      2
#define nDMASTR_DAC          5

//драйвер аудио-потока (aout.cpp):
//---------------------------------
#define dmaU   ((nDMASTR_DAC >> 3) ? &DMA2: &DMA1)
#define dmaS   (&dmaU->STREAM[nDMASTR_DAC & 7])
...
  dmaS->CR = 1 << DMA_CR_EN | 1 << DMA_CR_TEIE | 1 << DMA_CR_TCIE |
    1 << DMA_CR_DIR | 1 << DMA_CR_DBM | DMAPRI_DAC << DMA_CR_PL |
    1 << DMA_CR_MINC | 2 << DMA_CR_PSIZE | 2 << DMA_CR_MSIZE |
    concat(DMAREQ_S, nDMASTR_DAC, _DAC, concat(DAC_DMASTR, nDMASTR_DAC)) <<
    DMA_CR_CHSEL;
Как видно - даже EN вполне нормально ставится и запускается канал одновременно с программированием управляющих бит.
PS: concat(...) - макрос текстовой склейки (конкатенации) строк
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

jcxz, а здесь все просто. Это учебный пример для чего и комменты на манипуляции с каждым битом.
Ферштейн?
Мудрый кот
Сообщения: 1846
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="dosikus",url="/forum/viewtopic.php?p=3457444#p3457444"]jcxz, а здесь все просто. Это учебный пример для чего и комменты на манипуляции с каждым битом.[/uquote]
Оне-ж воспримут это буквально и везде такое городить будут. :facepalm:
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3386
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

dosikus писал(а):Это учебный пример для чего и комменты на манипуляции с каждым битом.
Было бы лучше написать таким образом этот пример.

Код: Выделить всё

#define  DMA1_Channel_X DMA1_Channel3

DMA1_Channel_X->CCR  |=  DMA_CCR_MSIZE_0 | // Memory size 16 bit
                         DMA_CCR_PSIZE_0 | // Peripheral size 16 bit
                         DMA_CCR_PL_1    | // Channel Priority level High 
                         DMA_CCR_MINC    | // Memory increment mode 
                         DMA_CCR_CIRC    | // Circular mode
                         DMA_CCR_DIR;      // Data transfer direction Memory -> Peripheral
Реклама
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

jcxz писал(а): Никогда не понимал - на кой для каждого битового поля делать отдельное чтение-модификация-запись (LDR/ORR/STR) вместо просто записи всего слова сразу? :dont_know:
Потому что это не влияет на производительность, не об этом вам думать надо. Читаемость кода в варианте Досикуса лучше.
Конфигурация DMA это разовая операция. Переведите свой фокус на другое.
Последний раз редактировалось Oxford Сб сен 15, 2018 17:32:10, всего редактировалось 3 раза.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Мурик, я так и пишу, если бы ты был внимателен код что выше был выложен на казусе не мой.
Да и господа, дело то не в стиле , самое главное так никто и не понял.

http://mcu.goodboard.ru/viewtopic.php?id=31
Мудрый кот
Сообщения: 1846
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="Oxford",url="/forum/viewtopic.php?p=3457482#p3457482"]Потому что это не влияет на производительность, не об этом вам думать надо. Читаемость кода в варианте Досикуса лучше.
Конфигурация DMA это разовая операция. Переведите свой фокус на другое.[/uquote]
И чем хуже читаемость: CCR = 1 << bit0 | 1 << bit1 | ...;
по сравнению с: CCR |= 1 << bit0; CCR |= 1 << bit1; ...
??
В читаемости нет никакой разницы.
А вот человек, сделавший так в одном месте и во всех остальных лепит то же самое. Даже не обращая внимание, что в регистре могут быть write-only-поля битов. Видел это многократно.

Добавлено after 1 minute 53 seconds:
[uquote="Мурик",url="/forum/viewtopic.php?p=3457473#p3457473"]Было бы лучше написать таким образом этот пример.[/uquote]
Я вообще-то писал что операция |= там совсем не нужна. Зачем все начинающие лепят это |= когда нужна только запись???

Добавлено after 2 minutes 54 seconds:
[uquote="dosikus",url="/forum/viewtopic.php?p=3457484#p3457484"]Да и господа, дело то не в стиле , самое главное так никто и не понял.[/uquote]
Так разъясните :)
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="jcxz",url="/forum/viewtopic.php?p=3457489#p3457489"]Зачем все начинающие лепят это |= когда нужна только запись???[/uquote]Да если бы только начинающие, у сепербизонов это тоже сплошь и рядом.
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

jcxz, ко мне лучше на ты.
И так ты прицепился к записи, а то что вопрошающий даже не вник, что инит DMA и таймера напрямую , и проще и универсальней , пролетело мимо тебя .
Давайте еще здесь устроим срач, на потеху ARV.
Он уже прямо кипит, поднотавливая опус как все грызутся из-мелочей так и неудосужевшись помочь...
Мудрый кот
Сообщения: 1846
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="dosikus",url="/forum/viewtopic.php?p=3457524#p3457524"]И так ты прицепился к записи, а то что вопрошающий даже не вник, что инит DMA и таймера напрямую , и проще и универсальней , пролетело мимо тебя.[/uquote]
Без калокуба? А что тут обсуждать? Это же очевидная вещь. :dont_know:
Калокубокодеру никогда не стать программистом. Да и вообще - не создать ничего стоящего. Сможет только чужие решения тырить и кое-как костылить.
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

На сайте апача есть проект "mynewt" -- типа операционной системы для интернета вещей. Помимо прочего, поддерживаются и STM32. Пилящие поддержку STM32 используют CubeMX. Та же фигня с микропитоном. Оба проекта не имеют аналогов и как-то с натугой верится, что их девелоперам "никогда не стать программистами".
Последний раз редактировалось a5021 Вс сен 16, 2018 01:42:15, всего редактировалось 2 раза.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2411
Зарегистрирован: Ср фев 23, 2011 12:12:31

Сообщение AndTer »

[uquote="jcxz",url="/forum/viewtopic.php?p=3457561#p3457561"]Калокубокодеру никогда не стать программистом. Да и вообще - не создать ничего стоящего. Сможет только чужие решения тырить и кое-как костылить.[/uquote]
Нашли друг друга... кубохейтеры... Если не хватает умений использовать достижения во благо, это скорей ваш недостаток.
И интересно, что ТЫ ЛИЧНО создал стоящего? Расскажи! Очень интересно послушать!
Или ты часть стада, которое только и повторяет за своим хозяином "калокуб" "не программист" "тырить костылить"... А сам на деле пшик? Право смешно!
Глупый не задает вопросы. Глупый и так все знает.
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="Oxford",url="/forum/viewtopic.php?p=3457482#p3457482"]Конфигурация DMA это разовая операция.[/uquote]
Точно. Один раз записал вот так и теперь просто копирую.

Код: Выделить всё

  DMA1_Channel3->CCR = (
    1 * DMA_CCR_EN        | // Channel enable
    1 * DMA_CCR_TCIE      | // Transfer complete interrupt enable
    0 * DMA_CCR_HTIE      | // Half Transfer interrupt enable
    1 * DMA_CCR_TEIE      | // Transfer error interrupt enable
    0 * DMA_CCR_DIR       | // Data transfer direction
    0 * DMA_CCR_CIRC      | // Circular mode
    0 * DMA_CCR_PINC      | // Peripheral increment mode
    1 * DMA_CCR_MINC      | // Memory increment mode
    // PSIZE[1:0] bits (Peripheral size)
    //    00: 8-bits
    //    01: 16-bits
    //    10: 32-bits
    //    11: Reserved
    0 * DMA_CCR_PSIZE_1   | // Bit 1
    0 * DMA_CCR_PSIZE_0   | // Bit 0
    // MSIZE[1:0] bits (Memory size)
    //    00: 8-bits
    //    01: 16-bits
    //    10: 32-bits
    //    11: Reserved
    0 * DMA_CCR_MSIZE_0   | // Bit 0
    0 * DMA_CCR_MSIZE_1   | // Bit 1
    // PL[1:0] bits(Channel Priority level)
    //    00: Low
    //    01: Medium
    //    10: High
    //    11: Very high
    0 * DMA_CCR_PL_0      | // Bit 0
    1 * DMA_CCR_PL_1      | // Bit 1
    0 * DMA_CCR_MEM2MEM     // Memory to memory mode
  );
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

[uquote="AndTer",url="/forum/viewtopic.php?p=3457665#p3457665"]И интересно, что ТЫ ЛИЧНО создал стоящего? Расскажи! Очень интересно послушать![/uquote]


Сказано так будто это ты родитель калокуба, продолжай не стесняйся ... :))) :))) :)))
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2411
Зарегистрирован: Ср фев 23, 2011 12:12:31

Сообщение AndTer »

[uquote="dosikus",url="/forum/viewtopic.php?p=3457740#p3457740"]...[/uquote]

Я задавал вопрос не тебе, но ответ хороший = ничего не сделали своего, только критикуют!
А с кубом делают многие и делают реальные вещи. Если вам он не нравится, если не хвататет знаний и умений его освоить и использовать во благо, то просто проходите мимо.

Куб снижает уровень вхождения в стм32, если его использовать для первоначальной настройки и инициализации, это не сильно вредит коду.
Далее человек научившись мигать светодиодом с его помощью(и не только мигать, ибо большинство радиогубительских задач не требуют глубоких познаний МК, даже если речь идёт о коммерческих устройствах, а первое устройство с помощью куба можно собрать с нуля, перейдя с авр например, буквально за один день), при необходимости, при потребности, начнёт читать документацию и изучать МК глубже.

И да, досикус, ты так не ответил на вопрос, когда у тебя стала карма -2 (кстати за хамское отношение к людям использующим куб в том числе), внезапно, на следующий день она стала +14. У тебя за ночь пропали АБСОЛЮТНО все минусы. Как так получилось то? Что за волшебство?
Глупый не задает вопросы. Глупый и так все знает.
Мудрый кот
Сообщения: 1846
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="AndTer",url="/forum/viewtopic.php?p=3457665#p3457665"]И интересно, что ТЫ ЛИЧНО создал стоящего? Расскажи! Очень интересно послушать![/uquote]
Боюсь, что представитель стада калокубокодеров не сможет даже строчки понять. :dont_know:
[uquote="AndTer",url="/forum/viewtopic.php?p=3457665#p3457665"]Или ты часть стада, которое только и повторяет за своим хозяином "калокуб" "не программист" "тырить костылить"... А сам на деле пшик? Право смешно![/uquote]
Есть мудрая поговорка: "Не мечите бисер перед ...". Я последую ей.... :dont_know:

Добавлено after 10 minutes 11 seconds:
[uquote="AndTer",url="/forum/viewtopic.php?p=3457768#p3457768"]Куб снижает уровень вхождения в стм32, если его использовать для первоначальной настройки и инициализации, это не сильно вредит коду.[/uquote]
Согласен с этим - снижает уровень требований к умственным способностям юзера. И там и оставляет их на том же уровне.

[uquote="AndTer",url="/forum/viewtopic.php?p=3457768#p3457768"]А с кубом делают многие и делают реальные вещи.[/uquote]
Конечно! Реальную моргалку лампочками. :)))
Если посмотреть по форумам, то все они наполнены стонами калокодеров о том, что "вот нашёл такой код в нете и вставил сюда, но почему-то не работает. Помогите! месяц уже SPI/I2C/... не могу запустить...". И все такие сообщения касаются самых примитивных вещей как правило.
А вот от тех, кто читает доки и по ним делает, от тех почти нет таких примитивных вопросов. Вопросов от них гораздо меньше и по более серьёзным темам.

[uquote="AndTer",url="/forum/viewtopic.php?p=3457768#p3457768"]Далее человек научившись мигать светодиодом с его помощью, при необходимости, при потребности, начнёт читать документацию и изучать МК глубже.[/uquote]
....это в розовых фантазиях. А на практике: пытается костылить калокуб-говнокод (или искать в нете такие же потуги других калокодеров), даже не задумываясь открыть доку, так как приучен уже кубом не напрягать извилины.
Подтверждений этому - масса в разных форумах. Да собственно эта тема - тоже яркий пример тому.
Последний раз редактировалось jcxz Вс сен 16, 2018 09:41:29, всего редактировалось 1 раз.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Интересно, как люди программировали(ют) микроконтроллеры на которые никаких кубов не было, нет и не будет? В лучшем случае файл с дефайнами периферии.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18791
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

рискну высказать своё мнение: на системах с явным избытком ресурсов нет никакого смысла заниматься ловлей блох в виде изучения всяких там битов и т.п. как на PC прошла эпоха программирования на ассемблере, так и на МК, похоже, это грядет. и производители это отлично понимают, создавая всякие Кубы и т.п. слои абстракций в виде библиотек, максимально абстрагированных от аппаратуры. очевидно, что вскоре вся аппаратура в МК с общирными ресурсами будет упрятана в драйвера по принципу IOCTL - открыл и пиши/читай, потом закрыл и радуйся, а как там оно внутре устроено, никого интересовать не будет. необходимость изучения периферии по даташитам пока имеет актуальность только из-за отсутствия достаточно абстрагированной модели взаимодействия с нею, но это не надолго.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

[uquote="ARV",url="/forum/viewtopic.php?p=3457783#p3457783"]рискну высказать своё мнение: на системах с явным избытком ресурсов нет никакого смысла заниматься ловлей блох в виде изучения всяких там битов[/uquote]

Это однобокий взгляд адепта софтового ногодрыга.
И вотЪ когда ты осознаешь что PC не МК , может быть тогда толк с тебя и выйдет..
Ответить

Вернуться в «ARM»