Interrupt System

자 이제 가장 중요한 인터럽트의 시작이다

얘네는 또 지들만의 고유한 용어를 사용한다.

Service Request Nodes(SRNs) 

Service Request는 특이하게도 interrupt request 혹은 DMA request로 정의 된다.

 

Conventional architectures generally take a long time to service interrupt requests, and they are normally handled by loading a new Program Status (PS) from a vector table in data memory. In the TriCore architecture, service requests jump to vectors in code memory to reduce response time. The entry code for the ISR is a block within a vector of code blocks. Each code block provides an entry for one interrupt source.

이 부분 잘 이해가 안가는데?

인터럽트 핸들러 들어가는 prologue/epilogue쪽 코드가 단순한 branch로 구성되어 있고 program status는 변경되지 않는다는 의미일까? 이건 타겟보드 혹은 컴파일된 바이너리의 어셈레벨 진행되는 코드를 보고 내용을 추가해야 할 것 같다.

 

이전 내용에서는 CSA(Context Save Areas)가 있어서 save/restore context를 할 수 있다고 했는데 여기에 interrupt가 포함되는 거 아닌가? 그러면 기존의 conventional architecture랑 동일한 게 아닌감?

 

이 부분관련해서는 내용 추가가 필요할 것 같다.

 

Interrupt Priority

중요한  부분이다. 당연히 interrupt의 nested를 지원한다.

ICU(Interrupt Control Unit) 은 어떤 인터럽트 소스가 승리할 지(처리될지) arbitration 을 하는데 이건 당연히 prioriryt number based로 진행 된단다.

 

각 인터럽트 타입들은(Service Request) 당연히 Priority Number랑(SRPN) assign이 되어있다.

interrupt pirority는 255 level

 

너무 졸려서 더이상 진행 불가

나머지 내용은 다음에 이어서 추가 작성하는 걸로......

 

Figure 5-1 Block Diagram of a Typical TriCore Interrupt System 관한 내용을 리뷰하고 있었음

 

 

Posted by 쵸코케키

tricore 아키텍쳐에 대해 써보려고 한다.

정확히 벤치를 돌려보지는 않았는데 체감 성능은 Cortex M7은 가야 맞짱이 가능하지 않나 싶다.

벤치를 돌려본게 아니라 진짜 성능이 그렇게 나오는지는 모르것고 일단 줜나 빠르고 줜나....비싸다.

Aurix 3G TC4x 시리즈 나오면 가격이 얼마나 갈까

시간 되면 V850 

 

여튼 tricore에 대해 설명해둔 자료도 없고 공부하는 식으로 정리를 해보려고 한다.

 

레지스터

The PCXI, PSW and PC registers are crucial to the procedure for storing and restoring a task’s context

PCXI - Previous Context Information register

PSW -Program Status Word

 

Registers [0H - 7H] are referred to as the ‘lower registers’

and registers [8H - FH] are called the ‘upper registers’.

 

Registers A[0], A[1], A[8], and A[9] are defined as system global registers.

These are not included in either the upper or lower context

 

and are not saved and restored across calls or interrupts.

They are normally used by the operating system to reduce system overhead

그럼 그냥 스크래치 용으로 써도 되는건가?

 

Memory Model

The architecture can access up to 4 GBytes (address width is 32-bits) of unified program and I/O memory. The address space is divided into 16 regions or segments [0H - FH], each of 256 MBytes. The upper four bits of an address select the specific segment.

 

Tasks and Contexts

A task is an independent thread of control. There are two types: Software Managed Tasks (SMTs) and Interrupt Service Routines (ISRs).

그냥 task 수행되는 걸 SMT라고 하고 인터럽트 처리되는 건 ISR이라고 하나보다

근데 왜 하필 이름을 SMT라고......

 

SMT는 당연히 여러가지 모드가 있다.

User-0 Mode

Used for tasks that do not access peripheral devices. This mode cannot enable or disable interrupts.

신기하네요. ARM Cortex에는 이런식으로 제한된 모드가 없어요. MPU를 써서 뭐 막아부리는게 아니면

 

User-1 Mode

Used for tasks that access common, unprotected peripherals. Typically this would be a read orwrite access to serial port, a read access to timer, and most I/O status registers. Tasks in this mode may disable interrupts for a short period.

 

Supervisor Mode

Permits read/write access to system registers and all peripheral devices. Tasks in this mode may disable interrupts

 

Individual modes are enabled or disabled primarily through the I/O mode bits in the Processor Status Word (PSW).

 

Context Save Areas

아...이런 이름 쓰지 말지. 타사의 HW랑 너무 중복 되네요 Save Area 이런거 용어로 쓰지 말자

The architecture uses linked lists of fixed-size Context Save Areas (CSAs). A CSA consists of 16 words of memory storage(64Bytes ㄷㄷㄷ), aligned on a 16-word boundary. Each CSA can hold exactly one upper or one lower context. CSAs are linked together through a Link Word

upper/lower context라는 용어가 나왔는데 일단 넘어가자

 

Context switching occurs when an event or instruction causes a break in program execution. The CPU then needs to resolve this event before continuing with the program.The events and instructions which cause a break in program execution are :

• Interrupt or service requests

• Traps

• Function calls

 

Posted by 쵸코케키

아파트 고층에다가 건물 배치상 바람골에 위치해서 거의 항상 빌딩풍이 강하게 부는 곳에 살고 있음

마침 미세먼지 매우 좋음으로 뜨는 날씨에 바람도 잘 불고 비도 상당히 많이 오길래 뒷 베란다에서 한 번 구이를 해보기로 함

 

비오는 날이면 연기가 창문으로 나가도 곧바로 없어질 것 같았고 다른 집이 베란다 창문을 닫아놓을 것으로 생각하여 시도해봤음

뒷베란다쪽은 확장형 집은 요리하는 부엌쪽이고 비확장형은 세탁기, 보일러 있는 다양도 실이라 배치상 민폐나 문제도 없을 것이라 판단함

 

캠핑 때 보니까 챠콜에서 거의 연기가 안나서 해볼만할 것 같았음

챠콜은 웨버사꺼로 9개만 사용함

 

결론적으로 다음에는 하지 말아야겠다는 뼈아픈 교훈을 얻음

1. 챠콜이 하얗게 구워지면 연기가 안나는데 챠콜에 착화하는 30분 동안 연기가 장난 아니다

베란다에 화재 경보기가 있었는데 진짜 간떨어지는 줄 알았음

 

2. 베란다는 창문 열어도 어느정도 밀폐가 되어있어서 이/일산화탄소 때문에 건강에 많이 안 좋았음

 

3. 고기 구울 때 미세하게 연기가 계속 나옴

아예 안나오는 건 아님

 

4. 가장 큰 문제는 고기에서 나오는 기름이 증기화 되어서 베란다 전체에 다 퍼졌다는 점이다

집에서 삽겹살을 구워먹으면 부엌 바닥 전체가 미끌거리는거 아실련지?

그것처럼 고기를 숯불/챠콜에 구우면 소고기임에도 불구하고 유증이 베란다 바닥 세탁기, 건조기 보일러, 오븐....오만가지곳에 다 퍼져서 미끌미끌 거리는 검은 먼지들이 가득해졌다

바닥은 세제로 닦아냈고 건조기, 세탁기, 오븐은 알콜로 싹다 닦아냈다

그런데 그래도 닦아낼 수 없는 물건들은 챠콜재 + 기름으로 덮혀서 만지기가 좀 거북한 상태

 

5. 탄내

베란다에서 불냄새가 안 없어진다

살려줘

 

 

결론: 절대 비추

숯불구이는 밖에서

 

Posted by 쵸코케키

예전에는 NO였다 but 최근에는 YES다

BT가 필요하면 동글 사서 끼면 되지 않냐고? 그게 문제가 있다.

 

USB 3.0 슬롯 신호랑 BT 신호랑 간섭이 가서 BT동글을 사서 USB 3.0 허브 슬롯에 끼면 통신이 불가능하거나 USB 장치가 뚝뚞 끊기거나 그런 문제가 생길 수 있다.

 

BT 동글 대충 택배비 더하면 만원 살짝 넘는다.

그냥 메인보드 살때 돈 조금 더 내서 BT 옵션 달린 거로 사는게 나은 거 같다

최소한 위에서 언급한 간섭을 어느정도 피할 수 있을 수도 있다.

 

또한 최근에는 무선 기기가 많아지면서 자신이 생각지도 못했던 무선 기기를 연결해야 할 수도 있는 상황이 발생하는 경우가 있다

 

마이크나 키보드, 마우스, 이어폰이나 휴대폰이나 등등

그렇기 때문에 얼마 돈을 더 주더라도 메인보드에 블루투스 옵션을 추가할 수 있다면 그걸 선택하길 권장하고 싶다

Posted by 쵸코케키

텐키를 사용하다가 텐키리스를 사용하면 은근 불편하다

텐키쪽 엔터랑 -/+ 같은 키가 문제인 거 같다

 

일단 텐키가 없어서 공간이 많이 절약 되기 때문에 그 자리에 마우스를 넣고 사용하면 공간 활용 용이성은 점수를 줄 만큼 만족스러운 것 같다.

 

단점은 위에서 말한 것 처럼 엔터가 없어서 자꾸 방향키를 클릭하는 문제가 있고(이건 습관을 다시 들이면 될듯)

-/+ 키 조합 단축키에 애로사항이 생기는 이슈가 있는데 예를 들어 ctrl + -/+로 확대 축소를 하는 프로그램이 있는 경우 좀 골치아 아파진다

 

결론?

이런 소소한 불편함이 있음에도 불구하고 공간이 줄어서 얻는 이득도 무시할 수 없을만큼 좋기 때문에 한 번 사용해보기를 추천하고 싶다

 

키보드 사용 경력이 짧고 텐키 이용 빈도가 낮은 사람이라면 ㅊㅊㅊ

(저는 텐키 사용 경력이 30년이 넘어서 ㅋㅋㅋ)

Posted by 쵸코케키

윈도우에서 배치파일, makefile로 빌드 시스템 구축해볼까 하는 분들을 위해....

결론: 추천하지 않음

 

이유

1. 윈도우 batchfile 즉 cli에는 아주 기가 맥힌 버그가 종종 있다. 하나가 아니다 문제는 그런 것들이 꼭 급할 때 갑자기 뿅! 하고 튀어나온다. 유니코드 한글 문자열 처리 버그 환경 변수 버그 등등 검색해도 나오지 않는 잡 버그들이 좀 있다.

파워쉘은 안써봐서 모르겠다. 근데 사용자 수가 적은 파워쉘을 써서 개발하느니(심지어 기본 탑재가 아니라 설치하려면 권한도 받아야 한다!!) 걍 파이썬 같은 거 배워서 쓰겠다.

 

2. 윈도우용 makefile에 오묘한 버그가 있다.

linux용 makefile에는 없는 버그로 일부 문법 처리가 이상하게 된다

그리고 멀티코어 빌드가 잘 안된다 되는 놈도 있고 안 되는 놈도 있고 되긴 했는데 이상하게 되는 놈도 있고 각양각색이라 신뢰를 못하겠다

 

3. 윈도우용 gnu util(binutils)도 버그가 있다.

이건 태생적으로 어쩔 수가 없다. 리눅스에서 돌아가라고 만든 걸 윈도우에서 만들어 놨으니 가끔 오작동 하는건 양해해야지

 

4. 윈도우용 gnu util의 문법이 다르다!

linux에서 잘 되는 문법 그대로 윈도우에서 쓰면 다르게 동작할 때가 있다

awk 같은 애들...

 

5. 지럴 콜라보

234가 콜라보로 지럴얨병을 할 때가 있다

 

6. 배치파일은 확장성이 매우 구리다

함수 처리, 문자열 파싱하다보면(for 루프로 문자열 파싱을 해야한다 for루프로!!!!) 빌게이츠를 암살하고 싶어질 것이다.

 

 

근데 어쩔 수 없이 구축하려고 한다면 윈도우 batch file 쓰지 말고 파이썬 스크립트 같은 걸 추천한다.

꽤 방대한 량의 batch file 빌드 시스템을 약 2주 가량 파이썬으로 변환 작업 했는데 결과가 매우 만족스럽다.

파이썬 스크립트 쓰면 최소한 1, 3, 4, 5, 6의 문제는 해결되고 2번만 남으니 적당히 커버가 가능하다

Posted by 쵸코케키

급한 분들을 위해 정답부터 일단 작성

 

예시: 파일들이 여러개 있는데 그 중에서 wind라는 글자가 들어가지만 md5라는 글자가 들어가지 않는 파일 목록을 가져오고 싶다.

import re

 

strings = ('windFix.bin', 'windFix.bin.md5', 'windFix2.bin', 'ccccddd.cfg')

p = re.compile('wind.+[^md5]$')

for i in strings:

    m = p.search(i)

    if m:

        print(m.group(0))

 

주목할만한 점

1. ^로 제외하고 싶은 단어를 넣음

2. $로 문자열 끝을 지정

 

그냥 제외만 하고 싶은데요?

'^((?!md5).)*$'

열라 복잡하네

 

여기서 테스트 가능하다 - https://www.regextester.com/15 

 

Match string not containing string - Regex Tester/Debugger

Regex Tester requires a modern browser. Please update your browser to the latest version and try again.

www.regextester.com

 

 

기타 참고 - 파일목록 가져오기

import glob

 

path = 'c:\\fw\\.......'

fileList = glob.glob(path)

for i in fileList:

    print(i)

    #m = p.search(i)

    .....생략

 

기타 참고 2

ooo 혹은 xxx는 필수로 들어가고 zzz는 없어야 한다면?

('wind.+[ooo|xxx][^zzz]$')

 

Posted by 쵸코케키

둘 다 1년정도 써봤다

개발하며 느낀 점을 정리해본다.


ST - STM32F4 시리즈 -  CORTEX M4 기반

ATMEL - SAMV71 시리즈 - CORTEX M7 기반



IDE 무료 기준

ST - 이클립스(openstm32 라고 이클립스 기반 IDE http://www.openstm32.org/HomePage)

ATMEL - 비주얼스튜디오(Atmel Studio http://www.atmel.com/microsite/atmel-studio/)



디버깅의 강력함

Atmel Studio의 승리

모든 register 값 실시간으로 편하게 감상하며 디버깅 가능

openstm32의 경우 한수 아래의 느낌



개발의 용이함

ST

cubemx기반 기본 프레임웤을 다양한 IDE로 export 가능. 매우 안정적이며 업데이트가 지속적으로 자주 된다. 라이브러리 역시 매우 완성도 높다


ATMEL

Atmel Studio의 'START' 라는 기능을 통해 ASF라는 프레임웤 기반 소스 export 가능

Atmel Studio 7.0 기준 완성도가 너무 심각할 정도로 낮고 해결 불가능한 메모리 할당 버그 등 상용 제품 개발 불가 수준.

2017년 9월말 현재까지 미국 본사에 리포팅한지 반년 넘어가는데도 해결 기미 안 보임

업데이트 매우 느림. IDE 자체 버그가 있음

ASF...만들다 만거 많음 소스 export된거 보면 지원 안 하는 것들 많음

지금 프로젝트 무너지게 생겼음 소프트웨어 지원이 매우 심각함

다만 MCU 자체는 괜찮다는 생각이 듬



메모리 할당 버그에 대해 말을 더 해보면 프로세스 공간의 메모리 레이아웃이 정상적으로 안 잡혀서 내가 할당받고 사용하는 메모리를 신뢰할 수 없음

linker 가 생성하는 바이너리 직접 디버깅해서 수정할 자신 있으면 시도 ㄱㄱ



납기 직전인데 반년전 리포팅한 메모리 버그 결국 해결 안되서 프로젝트 무너지기 직전...답답해서 글 적어봄

Posted by 쵸코케키

얕은 지식과 편협한 사고로 작성하였습니다


지금 세상이 마치 인터넷 막 나왔을 때, 하나포스 adsl 들어왔을 때 같이 성장하고 커져가고 있는데 우리나라의 사령탑이신 구 대통령 - 박근혜씨가 무능하고 멍청한탓에 전 세계의 이런 흐름을 전혀 파악하지 못하고 딱 80년대 수준의 올림픽, 문화 수출 머 이런 생각 수준으로 열심히 해보자 이러시는데 그 덕분에 지금 울 나라가 많이 뒷쳐져있는 상태라 비상이 걸렸다.

그 전에 막대한 돈을 IT가 아니라 저물어가는 산업인 건설에 올인하신 우리의 영원한 리더 이명박 대통령............................................................


할아버지 할머니들이 아주 좋아 죽는 미국에서도 4차 산업 혁명 육성을 위해 어마어마하게 투자 지원을 하고 경제도 활발히 돌아가고있다

입에 거품을 물고 반쯤 기절하실꺼 같이 극렬히 증오하는 빨갱이들 즉 중국 공산당에서도 국가차원으로 돈을 때려 박으면서 빵빵하게 IT에 지원해주고 있는데

이런 시대 흐름을 저어어어언혀 못 쫒아 가시는 훌륭한 분들 덕분에 IT? 그거 그냥 콤퓨타 1~2년 열심히 하면 되는거 아니냐

사...삼성 갤럭시 해은드뽄 세계 쵀곤데 말야 우리나라 부지런하고 똑똑해서 할 수 있어 잠 안자고 안 먹고 어쩌고 저쩌고......

여태 뭐하고 안 했어! 빨리 TF팀 만들어서 다음달까지 만들어내!!

뭘 언제 직접 만들고 있어!! 그냥 라이브러리 그거 계약해서 사!!


노답




IOT 기기들을 위한 산업 지원

- 짜고치는 고스돕이나 수준 낮은, 형식적인 스타트업이 아니라 진짜 기술적으로 가능한 스타트업들 지원

지금도 정부 주관으로 하는 것들이 있긴 있는데 가보면ㅎㅎㅎ


전기차 및 부가 기술들(adas, lidar 등등) + 법령 개정 및 많은 논의들

- 많이 늦었으나 어차피 자율 주행 이런건 한참 뒤의 일이고 따라갈 수 있다


드론 + 법령 개정 및 많은 논의들


산업용 로봇 + IOT



단기간에 성과 안나오는데 어떻게든 해야 하는 것들

베터리 기술

ai

인간 타는 로봇




근데 문제가 있다

위의 작업에 필요한 인력들은 공무원 시험 준비하는 인물들로 채울 수가 없다

다시말해 인력이 부족하다. 쉽게 4년제 대학 졸업 시킨다고 바로 투입하기도 힘든 인력들이다. 어떻게 해야할까?


그리고 더 큰 문제가 있다.

산업구조의 커다란 개편은 어마어마한 진통을 가져온다. 수많은 실업자들을 어떻게 해야할까


게다가 무지 큰 문제가 있다.

부패 척결 및 사회 조직 정상화 그리고 회사 시스템 민주화 개혁이 필요하다


부패 척결 및 사회 기강 확립 이런거만 줄창 달려가도 1년 이상은 걸릴터

근데 또 친박 이런 애들이 미친듯이 딴지걸꺼다. 맞는 소리를 하거나 말거나 딴지를 일단 걸꺼다. 그게 정치니까. 너가 옳은건 알겠어 하지만 그걸 그냥 너가 다 해먹게 둘 수는 없어...이짓 못하게 하려면 국민이 눈을 시뻘겋게 뜨고 노려보고 있어야 한다.



빈 수레가 요란하다는데 내 머리가 그런거 같다

Posted by 쵸코케키

O_RDONLY 로 open 한 다음 write하면 당연히 퍼미션 에러 날 줄 알았는데 perror에서 Bad file descriptor 오류가 출력되더라

그런데 errno는 1 즉 EPERM이었다.


perror 버그 같은데......

glibc version 2.19, 

Posted by 쵸코케키

블로그 이미지
chocokeki
쵸코케키

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

최근에 올라온 글

최근에 달린 댓글

글 보관함