2022-07-15

[기술노트] esp-hosted를 위한 spi2 device tree






&spi2{
    pinctrl-names = "default","sleep";
    pinctrl-0 = <&spi2_pins_mx>;
    pinctrl-1 = <&spi2_sleep_pins_mx>;
    cs-gpios = <&gpiob 9 0>;
    status = "okay";
   
    spidev2: spidev@0{
        compatible = "linux,spidev";
        reg = <0>;
        spi-max-frequency = <20000000>;
    };
};

&spidev2{
    status = "disable";
};

[기술노트] sc16is752 device tree





&spi1{
    pinctrl-names = "default","sleep";
    pinctrl-0 = <&spi1_pins_mx>;
    pinctrl-1 = <&spi1_sleep_pins_mx>;
    status = "okay";
    /delete-property/dmas;
    /delete-property/dma-names;
    cs-gpios = <&gpioa 4 0>;

    sc16is752: sc16is752@0 {
        compatible = "nxp,sc16is752";
        reg = <0>;
        clocks = <&sc16is752_clk>;
        reset-gpios = <&gpiod 11 GPIO_ACTIVE_LOW>; // resetpin
        interrupt-parent = <&gpiod>; // pd4
        interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
        gpio-controller;
        #gpio-cells = <2>;
        clock-frequency = <20000000>;
        sc16is752_clk: sc16is752_clk {
            compatible = "fixed-clock";
            #clock-cells = <0>;
            clock-frequency = <1843200>;
        };      
    };  
};


[    1.894651] sc16is752@0 enforce active low on chipselect handle
[    1.897624] serial serial0: tty port ttySC0 registered
[    1.898114] spi1.0: ttySC1 at I/O 0x1 (irq = 56, base_baud = 115200) is a SC16IS752
[    1.898533] serial serial1: tty port ttySC1 registered

[기술노트] 패치파일 만들기


<.patch 만들기>

diff -uNr [원본파일 또는 경로] [수정파일 또는 경로] > [패치파일명]

ex) a.cpp를 b.cpp로 수정한후 b.patch를 생성

    diff -uNr a.cpp b.cpp > b.patch

 

<patch 적용하기>

patch [옵션] [원본파일] [패치파일]

ex) b.patch를 a.cpp에 적용하려면

   patch a.cpp b.patch


2021-12-17

stm32mp1

 

devtool modify tf-a-stm32mp sources/boot/tf-a


devtool modify u-boot-stm32mp sources/boot/u-boot


2020-08-12

gitlab-ce naver 메일 설정

 


# GITLAB CE 에 네이버 이메일 설정

sudo /etc/gitlab/gitlab.rb

------------

....

 gitlab_rails['gitlab_email_from'] = '로그인ID@naver.com'
 gitlab_rails['gitlab_email_display_name'] = '표기 이름'
 gitlab_rails['gitlab_email_reply_to'] = '로그인ID@naver.com'

....

 gitlab_rails['smtp_enable'] = true
 gitlab_rails['smtp_address'] = "smtp.naver.com"
 gitlab_rails['smtp_port'] = 465
 gitlab_rails['smtp_user_name'] = "로그인ID"
 gitlab_rails['smtp_password'] = "비밀번호"
 gitlab_rails['smtp_domain'] = "naver.com"
 gitlab_rails['smtp_authentication'] = "login"
 gitlab_rails['smtp_enable_starttls_auto'] = true
 gitlab_rails['smtp_tls'] = true

.....

 gitlab_rails['smtp_openssl_verify_mode'] = 'none'




2020-06-03

systemd

yocto systemd

리눅스 부팅 및 운영시, 서비스라는 컨셉으로 백그라운드에서 실행되는 것,
네트워크 설정, dhcp서버 운영, 방화벽, crond, 디바이스드라이버 트리거링
등등,
모든 기능들을 비슷한 설정파일과 실행방법으로 표준화? 통일화? 
각 서비스설정파일들에 스크립트도 연결가능하고, 서비스간 종속성도 정의 가능함.

이 서비스를 이용하여, 이더넷 1포트로 공유기구성 할것임.
1. network 설정 (vlan, dhcpc)
2. dnsmasq ==> 하부기기 dhcpd서비스
3. iptables ==> nat기능


# networkd.service
/etc/systemd/network 폴더에 99-default.link로 되어있고

99-default.link -> /dev/null 링크파일만 있다. 
그럼에도 eth0, eth1이 자동으로 살고, dhcp로 설정되어있다. 아마 드라이버단에서 올라온 eth장치들의 기본 설정인가보다.

인터넷에서 systemd networkd를 검색하면 다양한 설정방법이 있다.
https://wiki.archlinux.org/index.php/VLAN
여기 나온것들은 
/etc/systemd/network/eno1.network
이런이름의 이더넷장치.network 이다.
그리고,
/etc/systemd/network/eno1.100.netdev
과같은 이더넷장치.netdev 파일이 있다.

이 파일들은 yocto networkd 관련 recipe 에 추가해주어야 하는데,
급해서 그냥 만들어 넣었으나, 설정파일이 적용이 안되는 현상이 있었다.
위에 설명헌 99-default.link를 보고, 앞세 숫자를 쓰면 적용되었다.
그래서 만든 파일리스트.
-rw-r--r-- 1 root root   86 Jun  2 08:56 20-eth0.network
-rw-r--r-- 1 root root   66 Jun  2 09:43 21-eth0.101.network
-rw-r--r-- 1 root root   78 Jun  2 05:38 22-eth0.102.network
lrwxrwxrwx 1 root root    9 Jun  2 03:48 99-default.link -> /dev/null
-rw-r--r-- 1 root root   92 Jun  2 03:46 en.network
-rw-r--r-- 1 root root   49 Jun  2 05:33 eth0.101.netdev
-rw-r--r-- 1 root root   48 Jun  2 05:33 eth0.102.netdev
-rw-r--r-- 1 root root   94 Jun  2 03:46 wlan.network

network파일들에만 숫자를 붙였다.

결국, systemd가 서비스하는 networkd라는 서비스는 
/etc/systemd/network/파일들이 있으면, 그것을 토대로 네트워크 설정을 하는것이다.

root@imx6ull14x14evk:/etc/systemd/network# cat 20-eth0.network
[Match]
Name=eth0
KernelCommandLine=!nfsroot

[Network]
VLAN=eth0.101
VLAN=eth0.102

root@imx6ull14x14evk:/etc/systemd/network# cat 21-eth0.101.network
[Match]
Name=eth0.101

[Network]
DHCP=yes

[DHCP]
UseRoutes=true

root@imx6ull14x14evk:/etc/systemd/network# cat 22-eth0.102.network
[Match]
Name=eth0.102

[Network]
DHCP=no

[Address]
Address=192.168.102.1/24

root@imx6ull14x14evk:/etc/systemd/network# cat eth0.101.netdev
[NetDev]
Name=eth0.101
Kind=vlan

[VLAN]
Id=101

root@imx6ull14x14evk:/etc/systemd/network# cat eth0.102.netdev
[NetDev]
Name=eth0.102
Kind=vlan

[VLAN]
Id=102

여기까지 하면 eth0포트로 vlan 2개를 생성하고, eth0.101을 dhcpc로 ip를 받아오는 설정
eth0.102를 192.168.102.1로 설정하는것까지 된다.

공유기 기능을 위해서는 아이피 포워딩을 1로 만들어줘야한다. 이 설정은
/etc/sysctl.conf 파일안에 있다.
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
물론 이 설정도 yocto recipe에 추가해야함, 어디서하는지는 찾아보자.

다음은 eth0.102 포트로 dhcpd서비스를 구성해야하는데
dhcpd보다 dns캐쉬도 가능한 dnsmasq를 systemd로 구성해야하는데,
yocto에 ADD PACKAGE로 dnsmasq를 추가해서 빌드했다면, 기본구성은 있다.
단, conf가 기본값이므로, 변경시켜줘야한다.
위치는 /etc/dnsmasq.conf
모두 주석이라 지우기도 뭐하고해서, 맨 아래 다음과같이 추가함.
resolv-file=/etc/resolv.conf
interface=eth0.102
listen-address=127.0.0.1
dhcp-range=192.168.102.1,192.168.102.254,12h
물론 이 설정도 yocto recipe에 추가해야함, 어디서하는지는 찾아보자.

다음은 iptables로 nat와 마스커레이딩 룰을 추가해줘야 한다.
iptables는 systemd 파일이 없었다. 왜 없었지..

iptables.service 이것이 서비스파일인데 없어서, 
/lib/systemd/system/iptables.service 이걸 복사해다가
/etc/systemd/system 폴더에 넣음

내용을 보면
ExecStart=/usr/sbin/iptables-restore /etc/iptables/iptables.rules 룰 위치설정 기본값이므로
그곳에 rules파일이 있음, 이 내부에 필요룰을 넣어야하나,
룰 쓰는 문법이 까다로움.
직접쓰는 문법은있음.
iptables -P FORWARD ACCEPT
iptables --table nat -A POSTROUTING -o eth0.101 -j MASQUERADE
이렇게 입력하면, 커널내부규직에 룰이 세팅됨,
이걸 읽어서 rules파일로 넣는명령이 있음.
iptables-save > /etc/iptables/iptables.rules
cat /etc/iptables/iptables.rules 해서 내용을 보면,
# Generated by iptables-save v1.8.3 on Tue Jun  2 11:17:34 2020
*nat
:PREROUTING ACCEPT [167:54020]
:INPUT ACCEPT [40:4307]
:OUTPUT ACCEPT [38:2423]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth0.101 -j MASQUERADE
COMMIT
# Completed on Tue Jun  2 11:17:34 2020
# Generated by iptables-save v1.8.3 on Tue Jun  2 11:17:34 2020
*mangle
:PREROUTING ACCEPT [1176474:2149394260]
:INPUT ACCEPT [347:52516]
:FORWARD ACCEPT [1176111:2149340196]
:OUTPUT ACCEPT [323:37311]
:POSTROUTING ACCEPT [1176443:2149377969]
COMMIT
# Completed on Tue Jun  2 11:17:34 2020
# Generated by iptables-save v1.8.3 on Tue Jun  2 11:17:34 2020
*filter
:INPUT ACCEPT [161:26667]
:FORWARD ACCEPT [1175701:2149218077]
:OUTPUT ACCEPT [140:16903]
COMMIT
# Completed on Tue Jun  2 11:17:34 2020

이런 복잡한 내용으로 채워짐.
이 파일들, 내용 위치 생성등 모두 yocto recipe에 추가해야함, 어디서하는지는 찾아보자.


yocto recipe 알아야할 내용.
1. 패키지 추가방법
2. 관련 설정파일 추가방법

2020-06-02

주요 명령어


sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

route del default gw _gateway eth0
vconfig add eth0 101
vconfig add eth0 102
udhcpc -i eth0.101
ifconfig eth0.102 192.168.102.1 netmask 255.255.255.0 broadcast 192.168.102.255 up
route add default gw _gateway eth0.101

iptables -P FORWARD ACCEPT
iptables --table nat -A POSTROUTING -o eth0.101 -j MASQUERADE

ip link add link eth0 name eth0.101 type vlan id 101

//sd카드에 쓰기
bunzip2 -dk -f core-image-full-cmdline-imx6ull14x14evk.sdcard.bz2
sudo dd if=core-image-full-cmdline-imx6ull14x14evk.sdcard of=/dev/sdd bs=1M conv=fsync


2020-05-29

pppd


/etc/ppp/option 에서 crsrts제거해야 통신됨.
ctsrts

아래항목 처리.
AT*RNDISDATA=0
AT*AUTOCONN=0


#sudo pppd /dev/ttyUSB0 115200 unit 1 linkname datakey usepeerdns noauth user guest password guest defaultroute noipdefault ipcp-accept-local ipcp-accept-remote ipcp-max-failure 30 lcp-echo-interval 5 lcp-echo-failure 30 modem dump debug kdebug 8 connect "/usr/sbin/chat -v -t 500 -T *98# -f /home/happycpu/at_com_zte"

TIMEOUT   5
ECHO      ON
ABORT     BUSY
ABORT     ERROR
ABORT     'NO CARRIER'
ABORT     VOICE
ABORT     'NO DIALTONE'
ABORT     'NO DIAL TONE'
ABORT     'NO ANSWER'
ABORT     DELAYED
'' AT
OK AT
OK AT
SAY "Connect...\n"
OK        ATD*98#
TIMEOUT   30
SAY "done..\n"
CONNECT   ''
SAY "end\n"

그런데, ubuntu에서는 확인했으나, 라즈베리파이에서는 ftdi시리얼이 말을 듣지않음.

uml

http://naver.me/5YkKPHBP

2020-05-26

VLAN network setup (rasbian)


root@raspberrypi:/home/pi# apt-get install vim vlan dnsmasq iptables-persistent

pi@raspberrypi:~ $ cat /etc/network/interfaces

source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

auto eth0.101
iface eth0.101 inet dhcp

auto eth0.102
iface eth0.102 inet static
    address 192.168.102.1
    netmask 255.255.255.0
    network 192.168.102.0
    broadcast 192.168.102.255


pi@raspberrypi:~ $ cat /etc/dnsmasq.conf 
resolv-file=/etc/dnsmasq-resolv.conf
interface=eth0.102
listen-address=127.0.0.1
dhcp-range=192.168.102.1,192.168.102.254,12h

pi@raspberrypi:~ $ cat /etc/dnsmasq-resolv.conf 
nameserver 8.8.8.8
nameserver 8.8.4.4


pi@raspberrypi:~ $ cat /etc/rc.local 
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

#/sbin/iptables -P FORWARD ACCEPT
#/sbin/iptables --table nat -A POSTROUTING -o eth0.101 -j MASQUERADE

WAN=eth0.101
LAN=eth0.102
LANIP=192.168.102.0
/sbin/iptables  --flush
/sbin/iptables  -A FORWARD -o $WAN -i $LAN -s $LANIP/24 -m conntrack --ctstate NEW -j ACCEPT
/sbin/iptables  -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables  -t nat -F POSTROUTING
/sbin/iptables  -t nat -A POSTROUTING -o $WAN -j MASQUERADE

################################################
happycpu@happycpu:~$ cat internet_share.sh
#!/bin/bash

#set -x

if [ $# -ne 2 ];
then
echo "Usage: $ ./internet_share.sh [eth name connected to internet] [eth name connected to another device]"
exit
fi

# $1 : the name of ethernet for connecting to the interneet
# $2 : the name of ethernet for connecting to another client
sudo ip addr add 192.168.77.1/24 dev $2

sudo iptables --flush
sudo iptables -A FORWARD -o "$1" -i "$2" -s 192.168.77.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -F POSTROUTING
sudo iptables -t nat -A POSTROUTING -o "$1" -j MASQUERADE

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"




암호화 + base64 하고 쉘스크립트.

 #!/bin/bash # IV와 UserKey를 설정합니다 (아스키 문자열을 그대로 사용). IV="0123456789abcdef"  UserKey="0123456789abcdef" # IV와 UserKey를 16...