Category: лытдыбр

Category was added automatically. Read all entries about "лытдыбр".

promo eddy_em august 17, 12:33 3
Buy for 10 tokens
Юра намедни напечатал корпус для хронометра. Для первого блина получилось неплохо: И еще немного фотографий:
Костерок

Бутлоадер STM32F072

Получил намедни платки очередной управлялки ШД. Сдуру не завел BOOT0 на какую-нибудь ногу (+кондер) — понадеялся на возможность программного вызова USB-DFU. А вот фигвам! Вот такой код:
void Jump2Boot(){
    void (*SysMemBootJump)(void);
    volatile uint32_t addr = 0x1FFFC800;
//    sysreset();
    // Enable the SYSCFG peripheral.
    RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN;
    // reset systick
    SysTick->CTRL = 0;
    // disable all interrupts
//    __disable_irq();
//    __DSB();__ISB();
    // remap memory to 0 (only for STM32F0)
    SYSCFG->CFGR1 = 0x01;
    __DSB();__ISB();
    SysMemBootJump = (void (*)(void)) (*((uint32_t *)(addr + 4)));
    // set main stack pointer
    __set_MSP(*((uint32_t *)addr));
    SysMemBootJump();
}

при разных модификациях не работает! Несмотря на уйму ссылок в интернетах, где люди пишут, что у них все ОК.
Эх, так надеялся отладкой заниматься без всяких лишних приблуд. А придется, похоже, подпаивать разъемчик и втыкать st-link (который, кстати, почему-то несмотря на опцию --reset, после прошивки МК не сбрасывает).
Кстати, с утра бесполезно время убивал по другой причине: казалось бы один и тот же Makefile (но с немного разным порядком опций) давал совершенно иной результат, и прошивка не работала! А стоило опции поменять местами, как все пошло-поехало. Ну я просто вообще не понимаю…
Collapse )
Костерок

Как нонче официально "прошивку" принято обзывать?

Что-то голову ломаю: в неофициальной технической документации я просто пишу "исходники прошивки МК смотри в репе на гитхабе", а что написать в официальной? Если писать "исходные коды микрокода МК", получается какая-то тавтология...
Кто что пишет в таких случаях?
Костерок

Товарищи линуксоиды, а как туннелировать ssh?

Пока сижу в Ставрополе, для захода на работу приходится соединяться по ssh с одним компьютером, далее - с другим, и лишь с него по ssh можно выйти на рабочий компьютер. Копировать файлы таким образом очень неудобно.
А есть ли возможность как-то настроить туннель, чтобы нужно было только пароль рабочей машины ввести и сразу на нее попасть через две промежуточные?
UPD: проблема решилась довольно-таки просто. Здесь указано о замечательной опции ssh: ProxyJump. Так что, я просто записал себе в ~/.ssh/config:
Host ishtar.sao.ru
  ProxyJump SERVER2.sao.ru
Host SERVER2.sao.ru
  ProxyJump SERVER1.sao.ru

Теперь пароли нужны только от конкретных хостов, и нет нужды сохранять ключи на сторонних компьютерах. Просто генерим ключи к каждому хосту из прокси на своем локалхосте и все отлично!
// (понятно, что в локальной сети надо будет этот файлик сохранить под другим именем, чтобы не проксировалось).
Костерок

Вкусняшка

Позавчера сделал немножко (литров 7) томатной аджики, бродит сейчас на балконе. Аленка купила аж 3кг острого перца, в итоге остался один. Который срочно нужно было куда-то утилизировать. И так как вчера катали очередную партию томата (видимо, последнюю, т.к. банки уже складывать некуда), из последней кастрюли томата решил сделать вкусняшку — острый лечо.
Collapse )
Костерок

Цитата из наболевшего

вернуть NULL, если памяти не хватает. Что сделали в ядре? Правильно, сказали нехер и стали всегда возвращать указатель на память, даже если ее нет.
Если ты хочешь 100% получить память - ты можешь её получить mmap + map_populate. Я выше уже отвечал эдику. Тогда ты 100% получишь память, либо ошибку, если памяти не хватает.
Забавно, что под все остальные системы я просто могу использовать стандартный и простой в использовании malloc из libc, а для линукса нужно пердолиться для того, чтобы получить память.
(ЛОР)

Действительно, механизм выделения памяти в линуксе уж очень черезжопный.
Добавил в свои сниппеты:
#include <stdio.h>
#include <unistd.h>

static unsigned long long get_available_mem(){
    return sysconf(_SC_AVPHYS_PAGES) * (unsigned long long) sysconf(_SC_PAGE_SIZE);
}

int main(){
    unsigned long long m = get_available_mem();
    printf("MEM: %llu == %lluGB\n", m, m/1024/1024/1024);
    return 0;
}

// Never allocate memory by big pieces with malloc! Only mmap with MAP_POPULATE!!!!!!!!!11111111111
Костерок

Изменение ширин существующих дорожек в кикаде

Создатели кикада намертво приколотили ширины всех нарисованных дорожек к их сегментам, поэтому махом изменить все ширины не выйдет. Но можно сделать так:
sed -i 's/\(segment.*\)(width [^)]*)\(.*\)/\1(width 0.5)\2/' LUT.kicad_pcb

Аналогичным способом можно изменить ширины только требуемых (скажем, 0.2 на 0.5).

Да, переходные отверстия ведь тоже надо изменить. Вот:
sed -ie 's/\((via .*\)(size [^)]*) (drill [^)]*)\(.*\)/\1(size 1.5) (drill 0.6)\2/' LUT.kicad_pcb


Похоже, что для того, чтобы полноценно работать в кикаде, надо вливаться в ряды его разработчиков!
Костерок

Наконец-то работа над системой управления близится к завершению

Сгоревший драйвер L6208 я заменил, выполнил отладку всяких глюков. Осталось совсем немного (что-то подглючивает счет шагов после того, как я добавил ускорение на старте шаговиков, да и после этого же перестал работать поворот турелей на заданную позицию).
Отладка системы управления
Отладка

Collapse )
Костерок

Измерение крутящего момента двигателя VSS42-200-1.2

В ходе "внезапно обнаруженных особенностей" шаговых двигателей, которые предполагается использовать в криостате ИК-спектрометра (в пиковом режиме работы они выделяют 50 Вт!), а также для изучения, насколько драйвер ШД L6208N хуже драйвера TB6560AHQ, я на этой неделе провел кое-какие испытания.

Для затравки — видео:

это позорище — "измерительная установка", использующаяся в эксперименте.

Collapse )