2022-07-15

[개발노트] esp32c3 적용.



요점
esp32c3의 spi모드가 2-->3으로 변경되어야하므로, esp32c3의 prebuild이미지는 사용할수가 없음.
uart hci는 사용하지않고 spi로만 사용함.-->vhci 모드라고 함.
블루투스는 표준규칙을 잘 따르는듯 한데 wifi는 약간 야매느낌이다.
wifi는 esp32에서 다 해주고. 뭔가 별도의 내부프로토콜로 esp32로의 통신을 중계해주는 구라 network interface 인듯함. 그래서 쓰는법도 좀 다른듯하고 해서 찬찬히 연구해볼필요있음.

순서.
1. esp-hosted의 리눅스 드라이버 빌드
esp-hosted/host/linux/host_driver/esp32/spi/esp_spi.c 아래와 같이 수정.
    //esp_board.mode = SPI_MODE_2;
    esp_board.mode = SPI_MODE_3;
    //esp_board.max_speed_hz = spi_clk_mhz * NUMBER_1M;
    esp_board.max_speed_hz = 5 * NUMBER_1M;

  esp-hosted/host/linux/host_driver/esp32/spi/esp_spi.h 핀번호 변경 ev1 값이므로 ssonic은 다른 번호겠지.  
//#define HANDSHAKE_PIN           111 //evm
#define HANDSHAKE_PIN           105 // ssonic gpiog15
#define SPI_IRQ                 gpio_to_irq(HANDSHAKE_PIN)
//#define SPI_DATA_READY_PIN      55 // evm
#define SPI_DATA_READY_PIN      77 // ssonic gpiob9
#define SPI_DATA_READY_IRQ      gpio_to_irq(SPI_DATA_READY_PIN)

  esp-hosted/host/linux/host_driver/esp32/main.c delay있는 두줄 추가.   
#define HOST_GPIO_PIN_INVALID -1
static int resetpin = HOST_GPIO_PIN_INVALID;
static int delay = 0;
module_param(resetpin, int, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
MODULE_PARM_DESC(resetpin, "Host's GPIO pin number which is connected to ESP32's EN to reset ESP32 device");
module_param(delay, int, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);

#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0))

source /home/happycpu/work/Developer-Package/SDK/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
export KERNEL=/home/happycpu/work/Developer-Package/stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17/sources/arm-ostl-linux-gnueabi/linux-stm32mp-5.10.61-stm32mp-r2-r0/linux-5.10.61.ev1
make target=spi ARCH=$ARCH CROSS_COMPILE=$CROSS_COMPILE KERNEL=$KERNEL resetpin=3 
#resetpin은 컴파일할데 인자로 리셋핀을 지정하는 방법임. 지정하지않을경우, 기본3으로 정의됨.gpio번호임. 다른거라면 다른번호로 지정해야함.
happycpu@happycpubox:~/work/testproj/esp-hosted/host/linux/host_driver/esp32$ source /home/happycpu/work/Developer-Package/SDK/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
happycpu@happycpubox:~/work/testproj/esp-hosted/host/linux/host_driver/esp32$ export KERNEL=/home/happycpu/work/Developer-Package/stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17/sources/arm-ostl-linux-gnueabi/linux-stm32mp-5.10.61-stm32mp-r2-r0/linux-5.10.61.ev1
happycpu@happycpubox:~/work/testproj/esp-hosted/host/linux/host_driver/esp32$ make target=spi ARCH=$ARCH CROSS_COMPILE=$CROSS_COMPILE KERNEL=$KERNEL resetpin=3
rm -rf *.o sdio/*.o spi/*.o *.ko
make ARCH=arm CROSS_COMPILE=arm-ostl-linux-gnueabi- -C /home/happycpu/work/Developer-Package/stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17/sources/arm-ostl-linux-gnueabi/linux-stm32mp-5.10.61-stm32mp-r2-r0/linux-5.10.61.ev1 M=/home/happycpu/work/testproj/esp-hosted/host/linux/host_driver/esp32 clean
make[1]: 디렉터리 '/home/happycpu/work/Developer-Package/stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17/sources/arm-ostl-linux-gnueabi/linux-stm32mp-5.10.61-stm32mp-r2-r0/linux-5.10.61.ev1' 들어감
  CLEAN   /home/happycpu/work/testproj/esp-hosted/host/linux/host_driver/esp32/Module.symvers
make[1]: 디렉터리 '/home/happycpu/work/Developer-Package/stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17/sources/arm-ostl-linux-gnueabi/linux-stm32mp-5.10.61-stm32mp-r2-r0/linux-5.10.61.ev1' 나감
make ARCH=arm CROSS_COMPILE=arm-ostl-linux-gnueabi- -C /home/happycpu/work/Developer-Package/stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17/sources/arm-ostl-linux-gnueabi/linux-stm32mp-5.10.61-stm32mp-r2-r0/linux-5.10.61.ev1 M=/home/happycpu/work/testproj/esp-hosted/host/linux/host_driver/esp32 modules
make[1]: 디렉터리 '/home/happycpu/work/Developer-Package/stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17/sources/arm-ostl-linux-gnueabi/linux-stm32mp-5.10.61-stm32mp-r2-r0/linux-5.10.61.ev1' 들어감
  CC [M]  /home/happycpu/work/testproj/esp-hosted/host/linux/host_driver/esp32/esp_bt.o
  CC [M]  /home/happycpu/work/testproj/esp-hosted/host/linux/host_driver/esp32/main.o
  CC [M]  /home/happycpu/work/testproj/esp-hosted/host/linux/host_driver/esp32/spi/esp_spi.o
  CC [M]  /home/happycpu/work/testproj/esp-hosted/host/linux/host_driver/esp32/esp_serial.o
  CC [M]  /home/happycpu/work/testproj/esp-hosted/host/linux/host_driver/esp32/esp_rb.o
  LD [M]  /home/happycpu/work/testproj/esp-hosted/host/linux/host_driver/esp32/esp32_spi.o
  MODPOST /home/happycpu/work/testproj/esp-hosted/host/linux/host_driver/esp32/Module.symvers
  CC [M]  /home/happycpu/work/testproj/esp-hosted/host/linux/host_driver/esp32/esp32_spi.mod.o
  LD [M]  /home/happycpu/work/testproj/esp-hosted/host/linux/host_driver/esp32/esp32_spi.ko
make[1]: 디렉터리 '/home/happycpu/work/Developer-Package/stm32mp1-openstlinux-5.10-dunfell-mp1-21-11-17/sources/arm-ostl-linux-gnueabi/linux-stm32mp-5.10.61-stm32mp-r2-r0/linux-5.10.61.ev1' 나감
happycpu@happycpubox:~/work/testproj/esp-hosted/host/linux/host_driver/esp32$ 

출력파일은 
happycpu@happycpubox:~/work/testproj/esp-hosted/host/linux/host_driver/esp32$ ls
LICENSE   Module.symvers  esp32_spi.ko   esp32_spi.mod.c  esp32_spi.o  esp_bt.c  esp_bt_api.h  esp_rb.c  esp_rb.o      esp_serial.h  main.c  modules.order  spi
Makefile  esp.h           esp32_spi.mod  esp32_spi.mod.o  esp_api.h    esp_bt.o  esp_if.h      esp_rb.h  esp_serial.c  esp_serial.o  main.o  sdio
happycpu@happycpubox:~/work/testproj/esp-hosted/host/linux/host_driver/esp32$ 

scp로 넘겨서 사용. 향후 드라이버는 커널에 합치고, 아래 dev파일은 rootfs에 미리 만들어놓는다. 그래서 부팅하면서 자연스럽게 드라이버까지 올라가도록 
rmmod esp32_spi &> /dev/null
insmod esp32_spi.ko resetpin=3
mknod /dev/esps0 c 221 0
chmod 666 /dev/esps0

2. esp-hosted의 esp32c3용 driver수정.
  esp-hosted/esp/esp_driver/network_adapter/main/spi_slave_api.c 수정 SPI_MODE_3 으로..
    /* Configuration for the SPI slave interface */
    spi_slave_interface_config_t slvcfg={
        //.mode=SPI_MODE_2,
        .mode=SPI_MODE_3,
        .spics_io_num=GPIO_CS,
        .queue_size=SPI_QUEUE_SIZE,
        .flags=0,
        .post_setup_cb=spi_post_setup_cb,
        .post_trans_cb=spi_post_trans_cb
    };

3. esp-hosted의 test용 app 빌드
파이썬이 아닌 c언어 app으로 드라이버를 제어하는 유틸 및 api사용법, api라이브러리 사용법등이 이곳에 있음.
샘플 test.out 파일을 컴파일한다. (그걸로 ap scan 등등을 드라이버로 시킬수있다)
esp-hosted/esp-hosted/host/linux/host_control/c_support
Makefile 수정
첫쩨줄의 gcc를 주석처리함.
#CC = gcc

CROSS_COMPILE :=

컴파일
happycpu@happycpubox:~/work/esp-hosted/esp-hosted/host/linux/host_control/c_support$ make
arm-ostl-linux-gnueabi-gcc  -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/home/happycpu/work/Developer-Package/SDK/sysroots/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi -C -Wall  -I/home/happycpu/work/esp-hosted/esp-hosted/host/linux/host_control/c_support/../../../host_common/include/ -I/home/happycpu/work/esp-hosted/esp-hosted/host/linux/host_control/c_support/../../../../common//protobuf-c/ -I/home/happycpu/work/esp-hosted/esp-hosted/host/linux/host_control/c_support/../../../../common//include/ /home/happycpu/work/esp-hosted/esp-hosted/host/linux/host_control/c_support/../../../../common//protobuf-c/protobuf-c/protobuf-c.c /home/happycpu/work/esp-hosted/esp-hosted/host/linux/host_control/c_support/platform_wrapper.c /home/happycpu/work/esp-hosted/esp-hosted/host/linux/host_control/c_support/../../../../common//esp_hosted_config.pb-c.c /home/happycpu/work/esp-hosted/esp-hosted/host/linux/host_control/c_support/../../../host_common/transport_pserial.c /home/happycpu/work/esp-hosted/esp-hosted/host/linux/host_control/c_support/../../../host_common/commands.c test_api.c test.c -o test.out
happycpu@happycpubox:~/work/esp-hosted/esp-hosted/host/linux/host_control/c_support$ ls
Makefile  platform_wrapper.c  stress.c  test.c  test.out  test_api.c  test_api.h  test_config.h

scp로 넘겨서 사용.


4. device tree
실컷 유저모드 spi설정 다 해놓고선. 마지막에 다시 disable하는것이 끝.
// stm32mp157c-ev1 board.
&spi1{

    pinctrl-names = "default", "sleep";
    pinctrl-0 = <&spi1_pins_z_mx>;
    pinctrl-1 = <&spi1_sleep_pins_z_mx>;
    status = "okay";

    cs-gpios = <&gpioz 3 0>;
    bus-num = <1>;
    num-chipselects = <1>;
   
    #address-cells = <1>;
    #size-cells = <0>;

    spidev1: spi@1{
        status = "okay";
        compatible = "spidev";
        reg = <0>;
        spi-max-frequency = <10000000>;
    };
};

&spidev1{
    status = "disable";
};
//////////////////////////////////////////
// stm32mp153d-ssonic
&spi2{
    pinctrl-names = "default","sleep";
    pinctrl-0 = <&spi2_pins_mx>;
    pinctrl-1 = <&spi2_sleep_pins_mx>;
    status = "okay";
    cs-gpios = <&gpiob 25 0>;

    // /delete-property/dmas;
    // /delete-property/dma-names;

    spidev:spidev@0{
        compatible = "linux,spidev";
        status = "okay";
        reg = <0>;
        spi-max-frequency = <10000000>;
    };
};

&spidev{
    status = "disable";
};

5. yocto bluez
버전을 꼭 높은것을 써야 Codedphy를 사용할수있을듯
레시피에 추가한다. bblayer.conf


참, esp32c3용으로 빌드는
idf.py set-target esp32c3

[개발노트] i2c expander device tree파트




&i2c5{
    pinctrl-names = "default", "sleep";
    pinctrl-0 = <&i2c5_pins_mx>;
    //pinctrl-1 = <&i2c5_sleep_pins_mx>;


    i2c-scl-rising-time-ns = <185>;
    i2c-scl-falling-time-ns = <20>;
    status = "okay";
    /* spare dmas for other usage */
    /delete-property/dmas;
    /delete-property/dma-names;

    exp_gpio1: exp_gpio1@20 {
        compatible = "nxp,pcal6416";
        reg = <0x20>;
        gpio-controller;
        #gpio-cells = <2>;
        status = "okay";
        reset-gpios = <&gpiod 11 GPIO_ACTIVE_LOW>;
       
        interrupt-parent = <&gpioe>;
        interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
        interrupt-controller;
        #interrupt-cells = <2>;
    };
};

[개발노트] [dts] 74hc595 정통 spi모드



&spi4 {
    pinctrl-names = "default";
    pinctrl-0 = <&spi4_pins_mx>;
    status = "okay";
   
    //gpio-mosi = <&gpioe 14 0>;
    //gpio-sck = <&gpioe 12 0>;
    cs-gpios = <&gpioe 11 0>;

    /delete-property/dmas; // 필수.
    /delete-property/dma-names;

    num-chipselects = <1>;
    #address-cells = <1>;
    #size-cells = <0>;
   
    spi_gpio@0{
        compatible = "fairchild,74hc595";
        reg = <0>;
        gpio-controller;
        #gpio-cells = <2>;
        registers-number = <4>;
        spi-max-frequency = <10000000>;
        output-latch-gpio = <&gpioe 11 0>;
        registers-default = /bits/ 8 <0xFF 0xFF 0xFF 0xFF>;
    };
};

[기술노트] 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


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

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