https://developer.toradex.com/linux-bsp/how-to/device-tree/device-tree-overlays-linux/#preenabled-device-tree-overlays 발췌~
2022-09-18
2022-09-16
[잡시식] 시스템에 할당된(연결된?) 공인아이피 알아내기.
curl ifconfig.me
공유기밑에 사설ip임에도 최상단 공인ip를 알아낼수있다.
--> 이걸로, ISP정보를 알아낼수있을까?
--> 이걸로 ISP DNS서버를 알아내서.
--> 거기에 ping 을 하자. 제일 빠를듯?
2022-09-14
[개발노트][트러블슈팅] git clone이 안될때
갑자기 아래의 오류와 함께 git이 안될때...
Git: Fatal:Unsupported SSL backend 'openssl'. Supported SSL backends: gnutls
갑자기 아래의 오류와 함께 git이 안될때...
wget https://curl.haxx.se/ca/cacert.pem
mv cacert.pem ~/.ssh
git config --global http.sslBackend "openssl"
git config --global http.sslCAInfo ~/.ssh/cacert.pem
git config --global --unset http.sslBackend
2022-09-06
[개발노트][esp32] docker 설치 및 idf docker
[도커기반 개발환경을 위함]
sudo apt install docker.io
[idf docker 설치]
현재 위치 폴더를 idf 4.4 컨테이너 내부 /project에 연결
sudo docker run --rm -v $PWD:/project -w /project -it espressif/idf:release-v4.4
# idf.py set-target esp32c3
# cd /project/esp_hosted_mcu/esp/esp_driver/network_adapter
# idf.py build
# idf.py build
esptool.py 어쩌고저쩌고
잘되는가?
2022-09-05
[개발노트]초기설치
우분투20.04.5 기준, stm32mp1 개발에 필요한 기본 설치 (소스 및 배포판 제외)
sudo apt update
sudo apt install -y gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 xterm python3-subunit mesa-common-dev zstd liblz4-tool
sudo apt install -y make xsltproc docbook-utils fop dblatex xmlto
sudo apt install -y libmpc-dev libgmp-dev
sudo apt install -y build-essential libncurses-dev libyaml-dev libssl-dev
sudo apt install -y python-is-python3
sudo apt -y install coreutils bsdmainutils sed curl bc lrzsz corkscrew cvs subversion mercurial nfs-common nfs-kernel-server libarchive-zip-perl dos2unix texi2html diffstat libxml2-utils
sudo apt install -y openssh-server gcc-multilib libusb-1.0-0 vim screen
sudo usermod -a -G dialout $USER
sudo apt install -y gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 xterm python3-subunit mesa-common-dev zstd liblz4-tool
sudo apt install -y make xsltproc docbook-utils fop dblatex xmlto
sudo apt install -y libmpc-dev libgmp-dev
sudo apt install -y build-essential libncurses-dev libyaml-dev libssl-dev
sudo apt install -y python-is-python3
sudo apt -y install coreutils bsdmainutils sed curl bc lrzsz corkscrew cvs subversion mercurial nfs-common nfs-kernel-server libarchive-zip-perl dos2unix texi2html diffstat libxml2-utils
sudo apt install -y openssh-server gcc-multilib libusb-1.0-0 vim screen
sudo usermod -a -G dialout $USER
mkdir ~/.bin
PATH=~/.bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repo
chmod a+x ~/.bin/repo
터미널 열때마다 패쓰적용.
vim ~/.profile
if [ -d "$HOME/.bin" ] ; then
PATH="$HOME/.bin:$PATH"
fi
어디서든 실행할수있도록.
stm32cubeprogrammer symbolic link 추가.
ln -s <설치된위치>/STM32_Programmer_CLI $HOME/.bin/STM32_Programmer_CLI
udev rule복사해넣기. usb인식을 위한 규칙.
sudo cp ~/STMicroelectronics/STM32Cube/STM32CubeProgrammer/Drivers/rules/* /etc/udev/rules.d/
* conf/local.conf 에 OE_TERMINAL = "screen" 추가하면 터미널에서 menuconfig 됨.
2022-09-04
[개발노트] ttyUSB 권한
stm32cubeprogrammer를 실행할때 ttyUSB 포트를 사용못해서 관리자로 실행한적이 있는가??
sudo usermod -a -G dialout $USER
끝
2022-09-01
[개발노트] usb modem의 네트워크이름 바꾸고, DM포트 자동 생성
리눅스 RNDIS 드라이버를 켜면 usb테더링한 스마트폰, usb타입 모뎀 등이 네트워크로 잡힌다.
잡히는 순서에 따라 usb0, usb1 등 또는 usb-gadget 또한 usbX형태로 잡힌다.
그래서, usb net장치 의 제조사번호와 제품번호가 인식되면, udev의 rule에 등록하여
이름을 변경할 수있다.
또한 DM을위한 시리얼포트 생성하는 실행 스크립트도 추가할수있다.
/etc/udev/rules/XXXXX.rule
SUBSYSTEM=="net", ACTION=="add", ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="902d", NAME="lte0" ,RUN += "/usr/bin/modem_dm.sh"socat으로 ttyGS0 와 연결하면 됨.
2022-08-23
[개발노트] stm32mp1 Distro recipe usb0 g_ether 설정 막기.
stm32mp1 distro는 이더넷 가젯이 기본으로 설정되어있다.
usb0로 잡히며, 192.168.7.1 로 설정되고, pc측으로 dhcp ip를 준다
이것은 systemd 의 서비스로 설정되어있고,
usb0 이 잡힐때, 스크립트를 실행하여 수행된다.
g_serial을 우리는 사용해야하는데, 위의 g_ether가 설정되면,
g_serial관련 커널설정을 하더라도, /dev 안에 ttyGS0가 생성되지 않는다.
g_ether를 사용하지않으면 ttyGS0가 생성되더라. (이유는.....???)
또한 g_ether 커널옵션을 다 끄더라도, disto의 recipe는 남아있다.
이것이 뭐가 문제냐면,
usb modem을 host로 붙이는데, g_ether가 없으므로, 이 모뎀이 usb0로 잡히게 된다.
usb0로 잡히므로 위의 systemd에 의해 ip를 192.168.7.1로 설정해버린다.
그리하여 usb0는 모뎀인데, ip설정은 g_ether대로 설정이 되버리는 상황 발생.
그래서 systemd의 서비스까지 없애줘야한다.
통으로 막으면 흔적이 없어지므로 스크립트만 막는다. 위치는.
Distribution-Package/openstlinux-5.10-dunfell-mp1-21-11-17/layers/meta-st/meta-st-openstlinux/recipes-bsp/tools/usbotg-gadget-config.bb
1. systemd끄고,
SYSTEMD_AUTO_ENABLE_${PN} = "disable"
2. 네트워크 설정 설치 막고.
#install -m 0644 ${WORKDIR}/53-usb-otg.network ${D}${systemd_unitdir}/network
3. 스크립트 설치 막고.
#install -m 0755 ${WORKDIR}/stm32_usbotg_eth_config.sh ${D}${sysconfdir}/init.d/
# Copyright (C) 2018, STMicroelectronics - All Rights Reserved
# Released under the MIT license (see COPYING.MIT for the terms)
DESCRIPTION = "The goal is to enable USB gadget configuration"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
PV = "1.0"
SRC_URI = " file://usbotg-config.service \
file://stm32_usbotg_eth_config.sh \
file://53-usb-otg.network \
"
S = "${WORKDIR}/git"
inherit systemd update-rc.d
SYSTEMD_PACKAGES += "${PN}"
SYSTEMD_SERVICE_${PN} = "usbotg-config.service"
#SYSTEMD_AUTO_ENABLE_${PN} = "enable" c.h.jung
SYSTEMD_AUTO_ENABLE_${PN} = "disable"
do_install() {
if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
install -d ${D}${systemd_unitdir}/system ${D}${base_sbindir} ${D}${systemd_unitdir}/network
install -m 0644 ${WORKDIR}/usbotg-config.service ${D}${systemd_unitdir}/system
install -m 0755 ${WORKDIR}/stm32_usbotg_eth_config.sh ${D}${base_sbindir}
#install -m 0644 ${WORKDIR}/53-usb-otg.network ${D}${systemd_unitdir}/network
fi
install -d ${D}${sysconfdir}/init.d
#install -m 0755 ${WORKDIR}/stm32_usbotg_eth_config.sh ${D}${sysconfdir}/init.d/
}
INITSCRIPT_NAME = "stm32_usbotg_eth_config.sh"
INITSCRIPT_PARAMS = "start 22 5 3 ."
FILES_${PN} += "${systemd_unitdir}/network"
그러면, 모뎀ip잘되고, g_ether막히고. 잘됨.
2022-08-19
[개발노트]USB OTG ID 핀 상태 읽기 (0번비트임)
#include <stdio.h>
#include <sys/mman.h>
#include <fcntl.h>
int main(void)
{
int fd = open("/dev/mem", O_RDWR);
void* ptr = mmap(NULL, 4096, PROT_READ,
MAP_SHARED, fd, 0x49000000);
close(fd);
if(ptr == MAP_FAILED)
{
printf("mmap failed\n");
return -1;
}
volatile unsigned* GINTSTS = (unsigned*)(ptr + 0x14);
printf("%08X \n",*GINTSTS);
munmap(ptr, 4096);
return 0;
}
#include <sys/mman.h>
#include <fcntl.h>
int main(void)
{
int fd = open("/dev/mem", O_RDWR);
void* ptr = mmap(NULL, 4096, PROT_READ,
MAP_SHARED, fd, 0x49000000);
close(fd);
if(ptr == MAP_FAILED)
{
printf("mmap failed\n");
return -1;
}
volatile unsigned* GINTSTS = (unsigned*)(ptr + 0x14);
printf("%08X \n",*GINTSTS);
munmap(ptr, 4096);
return 0;
}
2022-08-15
[개발환경] WSL2 gui 환경설정과 접속.
sudo apt install -y xrdp
sudo apt install -y xfce4
gdm3선택
sudo apt install -y xfce4-goodies
sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak
sudo sed -i 's/3389/3390/g' /etc/xrdp/xrdp.ini
sudo sed -i 's/max_bpp=32/#max_bpp=32\nmax_bpp=128/g' /etc/xrdp/xrdp.ini
sudo sed -i 's/xserverbpp=24/#xserverbpp=24\nxserverbpp=128/g' /etc/xrdp/xrdp.ini
echo xfce4-session > ~/.xsession
sudo vi /etc/xrdp/startwm.sh
#test -x /etc/X11/Xsession && exec /etc/X11/Xsession
#exec /bin/sh /etc/X11/Xsession
#xfce
startxfce4
#exec /bin/sh /etc/X11/Xsession
#xfce
startxfce4
윈도우 원격데스크탑.
localhost:3390
인터넷브라우져가 없으므로
sudo apt install firefox
2022-08-04
[개발노트] 커널패치 만들어서 배포판에 넣어보기.
devtool modify linux-stm32mp 로 workspace에 소스빼기.
이때 생성된 커널소스는 모든 fragmemt와 patch가 적용된 최종 원본이다.
이 원본을 손대어 수정할 것이다.
일단 원본커널dir의 이름을 a로 바꾼다.
cp linux-stm32mp a
원본소스를 b로 바꾼후. 그안의 소스수정하자.
mv linux-stm32mp b
b/drivers/gpio/gpio-74x164.c 를 열어서 수정함.
174라인쯤에
of_property_read_u8_array(spi->dev.of_node, "registers-default",
chip->buffer, chip->registers);
추가함.
u-boot의 74x164소스는 디바이스트리의 기본값(registers-default)를 읽어서 초기값으로 사용하는데. 이후 커널의 74x164소스는 그게 없음, 그래서 초기값이 0으로 들어감.
u-boot에서 kernel 부팅시 버퍼변수가 적용되어 led들이 모두 켜짐. 다른제어핀도 있는데 초기값 유지가 안되는 문제로 확대걱정임. 그래서 위와같은 로직추가함.
diff -urN a/drivers/ b/drivers/ > 0099-ARM-5.10.61-stm32mp1-r2-74x164INITVALUE.patch
대충 이런내용.
diff -urN a/drivers/gpio/gpio-74x164.c b/drivers/gpio/gpio-74x164.c
--- a/drivers/gpio/gpio-74x164.c 2021-08-26 21:51:21.000000000 +0900
+++ b/drivers/gpio/gpio-74x164.c 2022-08-04 12:59:51.665613200 +0900
@@ -144,7 +144,8 @@
chip->gpio_chip.can_sleep = true;
chip->gpio_chip.parent = &spi->dev;
chip->gpio_chip.owner = THIS_MODULE;
-
+ of_property_read_u8_array(spi->dev.of_node, "registers-default",
+ chip->buffer, chip->registers);
mutex_init(&chip->lock);
ret = __gen_74x164_write_config(chip);
이걸 패치들 모여있는곳에 추가하자.
위치는
layers/meta-st/meta-st-stm32mp/recipes-kernel/linux/linux-stm32mp/5.10/5.10.61/
layers/meta-st/meta-st-stm32mp/recipes-kernel/linux/linux-stm32mp_5.10.bb 맨 밑에 파일추가
#c.h.jung added
KERNEL_CONFIG_FRAGMENTS += "${WORKDIR}/fragments/${LINUX_VERSION}/fragment-99-ssonic.config"
SRC_URI += "file://${LINUX_VERSION}/fragment-99-ssonic.config;subdir=fragments"
SRC_URI_class-devupstream += "file://${LINUX_VERSION}/fragment-99-ssonic.config;subdir=fragments"
#kernel patch
SRC_URI += " file://${LINUX_VERSION}/${LINUX_VERSION}.${LINUX_SUBVERSION}/0099-ARM-5.10.61-stm32mp1-r2-74x164INITVALUE.patch "
(기존에 fragment 추가한게 보이네? 그밑에 추가)
이제 빌드.
devtool reset linux-stm32mp 하여 연결고리 끊고 (압축파일풀어서 모두 다시 소스준비하도록)
확인은 알아서.
피드 구독하기:
글 (Atom)
도커 내부의 hosts에 주소 추가하기
echo "192.168.10.19 happycpu-P620.local" | sudo tee -a /etc/hosts
-
필요한사람. chagpt를 너무너무 많이 쓰는중에. 한글과 영어를 번갈아가며쓰는데, 한글다음 이응'ㅇ' 이나 'ㄹ' 을 빠르게 칠경우, 크롬의 주소창으로 이동되버리거나, 메뉴항목이 활성화되어, 내가 친 질문조합이 크롬을 종...
-
$sudo apt-get install tftpd-hpa 서버가 실행되지 않았다면 sudo service tftpd-hpa start /var/lib/tftpboot 을 기본으로 사용하게 된다. /etc/default/tftpd...