2022-08-02
[개발노트] stm32mp1 kernel fragment 적용.
1. devtool modify linux-stm32mp 로 workspace/source/linux-stm32mp 로 소스 빼냄.
2. devtool menuconfig linux-stm32mp 하여 기본에서 수정하고 싶은것 수정.
--> .../workspace/sources/linux-stm32mp/oe-local-files/devtool-fragment.cfg 에 생성됨.
4. 별도로 만드는 레시피가 복잡하므로, 이미 만들어져있는 커널레시피에 추가함.
이미 만들어져있는레시피
layers/meta-st/meta-st-stm32mp/recipes-kernel/linux/linux-stm32mp/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"
fragment-99-ssonic.config 파일은
layers/meta-st/meta-st-stm32mp/recipes-kernel/linux/linux-stm32mp/5.10/ 에 넣는다
(다른것들도 여기있음)
devtool reset linux-stm32mp 하면 devtool과의 연결고리가 끊어지고, 수동으로 폴더를 지워야함.
이후 다시 devtool modify linux-stm32mp 하면 새로 원본소스부터 fragment까지 다 적용한것을 workspace/source/linux-stm32mp에 만들어주는데, 이후 devtool menuconfig linux-stm32mp 하면
해당폴더에, .config.baseline 과 .config.new 가 생김.
menuconfig을 할경우 .config.new가 수정됨.
2022-07-28
[개발노트] yocto에 my-app 넣기.
사전준비
my custom recipe를 만드는법은 많이 나와있으므로, 생성시킴.
bitbake-layers show-layers
bitbake-layers create-layer --priority 7 ../layers/meta-st/meta-ssonic
bitbake-layers add-layer ../layers/meta-st/meta-ssonic
# We have a conf and classes directory, add to BBPATH
BBPATH .= ":${LAYERDIR}"
# We have recipes-* directories, add to BBFILES
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
${LAYERDIR}/recipes-*/*/*.bbappend"
BBFILE_COLLECTIONS += "meta-ssonic"
BBFILE_PATTERN_meta-ssonic = "^${LAYERDIR}/"
BBFILE_PRIORITY_meta-ssonic = "7"
LAYERDEPENDS_meta-ssonic = "core"
LAYERSERIES_COMPAT_meta-ssonic = "dunfell"
recipes-*/*/*.bb 와 bbappend를 찾는구조임.
recipes-이름/이름/이름.bb 로 만들면됨.
ex) app이라면,
recipes-app/app/app.bb 로 그냥 만들면됨
recipes-app/app/files 디렉토리를 만들고 그 안에 소스를 넣는다.
app.bb는 자동생성된것을 수정하여 사용한다.
내용은
SUMMARY = "bitbake-layers recipe"
DESCRIPTION = "Recipe created by bitbake-layers"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
python do_display_banner() {
bb.plain("***********************************************");
bb.plain("* *");
bb.plain("* Example recipe created by bitbake-layers *");
bb.plain("* *");
bb.plain("***********************************************");
}
addtask display_banner before do_build
SRC_URI = "file://*"
S = "${WORKDIR}"
P = "r01"
inherit cmake
cmake로 된 프로젝트일때 SRC_URI = "file://*"
CMakeLists.txt
cmake_minimum_required(VERSION 3.0.0)
project(hong)
#set (CMAKE_NO_SYSTEM_FROM_IMPORTED ON)
INCLUDE_DIRECTORIES( .)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lrt -lpthread -ldl -std=gnu99")
add_executable(main main.c)
install (TARGETS main DESTINATION bin)
install은 main이라는 프로그램이 /usr/bin에 들어간다.
끝.
2022-07-26
[개발노트] stm32mp1 kirk 4.0 stm32mp153에서 cpufreq-dt 오류.
커널소스에 두줄 추가.
{ .compatible = "st,stih418", },
{ .compatible = "st,stm32mp151", }, //추가.
{ .compatible = "st,stm32mp153", }, //추가.
{ .compatible = "st,stm32mp157", },
{ .compatible = "ti,am33xx", },
[개발노트] sc16is720 켜기
Device Drivers --->
Character devices ---> Serial drivers --->
<*> SC16IS7xx serial support
[*] SC16IS7xx for spi interface
2022-07-25
[개발노트] stm32mp1 PWM 켜기
Multifunction device drivers --->
{*} Support for STM32 Timers
[*] Pulse-Width Modulation (PWM) Support --->
<*> STMicroelectronics STM32 PWM
[개발노트] DSA켜기 커널옵션
순서대로....
[*] Networking support --->
Networking options --->
<*> The IPv6 protocol ---> <*> 802.1d Ethernet Bridging
<*> High-availability Seamless Redundancy (HSR & PRP)
<*> Distributed Switch Architecture --->
-*- Tag driver for SMSC/Microchip LAN9303 family of switches
Device Drivers --->
[*] Network device support --->
Distributed Switch Architecture drivers --->
<*> SMSC/Microchip LAN9303 3-ports 10/100 ethernet switch in MDIO managed mode
2022-07-19
[개발노트]u-boot env를 linux에서 접근하기.
1. build/conf/local.conf 에 라이브러리 추가한다.
IMAGE_INSTALL_append = " u-boot-fw-utils"
2. 루트파일시스템의 etc에 설정파일 추가.
/etc/fw_env.config
# Device name Device offset Env. size Flash sector size
- /dev/mmcblk1p1 -0x2000 0x2000
- /dev/mmcblk1p1 -0x4000 0x2000
- 3. fw_printenv aaa 333 이렇게 쓴다.
[개발노트] 이렇게 정말해야되냐.
커널을 손본후에 이미지빌드를 하면, 원복된다. 왜그럴까.
아래대로 하면 한번은 유지된다.
bitbake -c savedefconfig virtual/kernel
cp /home/happycpu/work/Distribution-Package/openstlinux-5.10-dunfell-mp1-21-11-17/build-openstlinuxweston-stm32mp153d-ssonic/tmp-glibc/work/stm32mp153d_ssonic-ostl-linux-gnueabi/linux-stm32mp/5.10.61-stm32mp-r2-r0/build/defconfig ./workspace/sources/linux-stm32mp/arch/arm/configs/multi_v7_defconfig
bitbake st-image-core
[개발노트] stm32mp1 u-boot 74hc595 살리기 config, dts.
devtool modify u-boot-stm32mp 를 통해 workspace에 생성된?(이동된) u-boot소스의
device tree는 심볼릭 링크이다. layers.......mx/stm32mp15x{보드명}/u-boot 에 실제파일있음.
1. u-boot 의 configs/stm32mp15_trusted_defconfig 파일 에 spi-gpio를 추가해준다.
(Distribution-package에서는 menuconfig 실행이 지원안되어 직접 config파일 편집함)
CONFIG_DM_74X164=y
CONFIG_SOFT_SPI=y
2. device tree 수정.
루트 맨 밑에 (오버레이항목말고) 그냥 추가
soft_spi: soft-spi {
compatible = "spi-gpio";
pinctrl-names = "default";
//pinctrl-0 = <&pinctrl_spi4>;
//pinctrl-assert-gpios = <&gpio5 8 GPIO_ACTIVE_LOW>;
status = "okay";
gpio-sck = <&gpioe 12 0>;
gpio-mosi = <&gpioe 14 0>;
cs-gpios = <&gpioe 11 0>;
num-chipselects = <1>;
#address-cells = <1>;
#size-cells = <0>;
spi-delay-us = <1>;
gpio_spi: gpio_spi {
compatible = "fairchild,74hc595";
reg = <0>;
gpio-controller;
#gpio-cells = <2>;
registers-number = <4>;
spi-max-frequency = <100000>;
output-latch-gpio = <&gpioe 11 0>;
registers-default = /bits/ 8 <0xFF 0xFF 0x00 0x00>;
};
};
u-boot빌드는 이전에 올린 글 참조.
피드 구독하기:
글 (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...