2025/01 56

4장 이어서..

1. 레퍼런스함수의 리턴 > 레퍼런스     int& ref();>    int& rev = ref(); ref() = 3;     >> 레퍼런스로 값 복사 or 레퍼런스처럼 값지정 2.marine2.be_attacked(marine1.attack()).be_attacked(marine1.attack());  1.  marine2.be_attacked(marine1.attack())  > return *this  2. marine2.be_attacked(marine1.attack())   > 앞에 거 하고 리턴 > 뒤에거 Marine& ~~~(){    return *this;}// 기존의 Marine을 가져옴 Marine ~~~() {  return *this;}// 새로운 Marine을 생성해서 그걸..

C++/모두의코드 2025.01.31

3장, 4장

malloc , freenew , delete new  :Type* name = new Type;배열 : new Type[size]; delete :   delete name;배열 : delete[] name; // size 안넣어줘도됨 객체 : 변수들, 참고 자료들로 이루어진 소프트웨어 덩어리   내가 함수속에 들어가는것이 아닌  > 절차지향 (procedure :: 각 함수 들을 걸쳐감)내가 함수를 실행한다.                   > 객체지향 (object       :: 각 객체가 함수를 실행) private :   객체가 함수를 통해 변수를 변경한다.      > 객체외의 존재 (프로그래머 포함 + instance)는 접근할수없다 public :  객체 외에서 (instance에서도) ..

C++/모두의코드 2025.01.30

1장

#include int main() { std::cout iostream :  Input Output stream ~= stdio    std : 이름 공간(namespace)  :: 표준 라이브러리의 (iostream) 모든 함수, 객체 등 정의 나만의 namespace 를 만들자 "header1.h"namespace header1 {int foo();void bar();} header1 namespace 에는 함수2개 정의#include "header1.h"#include "header2.h"namespace header1 {int func() { foo(); // 알아서 header1::foo() 가 실행된다. header2::foo(); // header2::foo() 가..

C++/모두의코드 2025.01.29

게획) SBC, MCU, FPGA

SBC : 라즈베리파이 ( 파이4 model B )                                                 ::  리눅스 탑제 ( 고급기능)            > 운영체제 탑제(리눅스) , 통신, 어플리케이션 등 고급 기능 사용 ::   but 고속 연산 떨어짐FPGA : zynq-7000 시리즈 (FPGA + ARM)              > FPGA : 고속 병렬 데이터/ 신호 > HW  가속                           :: with   matlab, simulink ,verilog           + > ARM   : 제어,통신, 파일관리     > HW ->  SW (RTOS) 제어  :: RTOS 탑제 (실시간처리) with c++    >..

임베디드 2025.01.29

스타트업 코드 분석

0.  링크 스트립트프로그램의 메모리 배치를 정의.text, .data, .bss 등의 섹션 위치 및 크기를 지정ROM, RAM 주소 지정벡터 테이블, 스택, 힙의 위치를 지정     스타트업 코드시스템이 부팅될 때 초기화 코드 실행벡터 테이블 설정.data 섹션을 RAM으로 복사.bss 섹션을 0으로 초기화스택과 힙을 설정main() 함수 호출 1. .bss 섹션 > 초기화안한 변수에 0 을넣어줌 >  안해주면 쓰레기값이 들어감    > 초기화안한변수는 .bss 안에 넣어야함 2. Vector Table ~= 함수포인터들의 배열 Reset 부터 Main()으로 가는 과정!/*STM32 Programmaing manual 참고 + startup code, linker script, Debug > .map..

고추건조기 with Thread (FreeRTOS)

0. AWS (Amazon FreeRTOS)   :: 디바이스와 (stm으로만든) 클라우드와의 연결      > 클라우드에 있는걸 device로 왔다갔다    +   device > cloud > 다른 내 폰과같은걸로 정보 확인 등등 >> ex) 온도 모니터링 program      stm32에서 온도 센서 > 온도측정 > 너무 높거나, 낮을시 경고 신호 발생     > MQTT 프로토콜 :: AWS Iot Core 로 전송 ex) LOW_TEMP_ALERT      >  AWS SNS        :: AWS Lambda 또는 AWS IoT Rules Engine       >> 핸드폰 APP, 이메일 등으로 알려주는 program     >> AWS IoT SiteWise, AWS QuickSight..

FreeRTOS porting

RTOS 사용 : thread 들이 거의 동시에 동작하면서도(실제로는 CPU가 왔다갔다)    그와중에 진짜 필요한 task는 우선적으로 실행될 수 있도록함 (우선순위) 0. STM32 cubeide > from1.5.0 1. cube32 Folder > Third party > FreeRTOS Folder2. lib 폴더에 복붙3.빌드제외     CMSIS V2      portable Folder > gcc, memmang 이외      GCC Folder      > ARM_CM3        이외     Mammeng        > heap_4              이외                              // 정적으로 스택메모리 사용 (static)4. Include    I..

4장 ,안한부분 끝 // 완

1, Assembly Helloworld.s -----------------------------------------------------------------------CODE32 ; ARM mode로 짰삼.AREA Helloworld CODE, READONLY ; 이 코드 block의 이름과 속성, 이름은 HelloWorld // CODE의 모음 AREAENTRY ; Instruction이 제일 처음 실행할 곳.BEGIN ; label      ADR r0, THUMB+1 ; r0에 THUMB label의 주소를 넣음.      BX r0 ; r0값으로 점프CODE16 ; 여기서부터는 THUMB mode로 컴파일 해줘.THUMB ; label      ADR r1, TEXT ; r1 ← "Hello..

2장 이어서 ~ 3장까지 (완)

1. extern  :: linker 에게 구멍 위치를 알려준다는 느낌 섹션별로 분리하고 모으고 분리하고 모으고.. > 실행가능한 파일로 만들어줌    > Relocate// Segment = ∑ Sections  2. Linker 의 link rule ( 동일한 이름의 Global symbol )   >   strong : 함수와 초기화가 된 전역변수 Weak  : 초기화가 되지 않은 전역변수  1) 여러 개의 Strong Symbol  > X   :: Link error2)  한개의 Strong Symbol, 여러 개의 Weak Symbol  >> Strong Symbol 선택3) 여러 개의 Weak Symbol  > 아무거나 하나 골라서 선택// Flag : True, false     > stat..

2장 이어서

1. .Preprocessor (.i) .c -> .s -> .o -> .elf -> bin  #ifdef :: 2중 define 막기위함 2. sta tic ::  C++ : protect     > 자기 함수, .c파일내에서만 global          > exturn 불가 3. Volatile : 같은 주소에 값을 연달아 넣을때 최적화방지 4. symbol : 자신만의 주소를 갖는 단위 :: global     local : 자신만의 주소 X  5. const : ReadOnly : 값 따로 못줌   ex) const int i;  > i 는 쓰레기값으로 평생 살아야함                   i=3; >> X 컴파일에러  6. RO, RW : read / write    > ROM 에 저..