본문 바로가기
Community Primitive

어서오세요!
친절한 임베디드 시스템 엔지니어 되기 강좌에 오신 것을 환영합니다!
계속되는 게시판 공격으로,
우리들의 이야기 나눔을소셜 코멘트로 나눠보려고 이렇게 따로 게시물을 만들었습니다.
지금 바로 당신의 이야기를 들려주세요.

방명록,임베디드레시피

트랙백 주소 : http://recipes.egloos.com/tb/5624603
내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
 
Tracked from 별일없는 바다표범님의 .. at 2022/01/01 16:47 x

제목 : startup.s 및 link 관련 문의 드립니다.
Community Primitive안녕하세요 질문이 있어 문의드립니다. EX) Debug Disable 하기 위한 특정 레지스터의 값을 변경을 하려고 합니다. 이러한 경우 Startup.s 와 링크 파일을 통해서만 변경을 해야된다고 할때 가능한지 만일 가능하다면 예제 가있을지 답변 부탁드립니다. OS는 리눅스가 아니며, IAR or Cube IDE 를 사용하지 않아 그 외 설정으로는 불가능한 환경입니다....more

 
Commented by ^^ at 2012/03/15 09:16
임베디드 공부하고있는 학생입니다. 생소한 용어들이 많아 어려워하고있었는데 정말 자세히 설명해주신덕분에!! 도움이 많이 됩니다.^^ 감사합니다!
Commented by 히언 at 2012/03/15 10:47
ㅎㅎ 별말씀을요!
도움이 되셨다니,
저야 말루 으쓱합니다.
Commented by soto at 2012/04/19 23:38
도움이 되셨다니 정말 기쁘네요.
꾸준히 공부하시다보면 어느세 전문가가 되어 있을겁니다.
확신합니다.~~!!
Commented by 황근호 at 2012/03/25 08:22
정말 감사드려요 여기에 제가 찾는 모든 공부가 있네요 ㅠㅠ
지금 캐나다에서 전기 공부하고 있는데 어려워서 미쳐버릴 지경이였는데 이곳이 저를 살려주네요.
복많이 받으실거에요
Commented by 히언 at 2012/03/25 13:28
아! 글로발 임베디드 레시피군요!

캐나다에서도 임베디드 강국 대한민국 국위선양 부탁합니다!

자주 놀러 오시고요~
Commented by soto at 2012/04/19 23:39
한국이 제일 좋은 것 같아요.
그죠..~~!!ㅎㅎ
Commented by 최강현 at 2012/03/30 00:22
안녕하세요 제가 메모리 관련 글을 읽고 공부 하다 질문이 있어 올립니다.
메모리 용량 구하는 공식을 찾아보니 용량=2^주소선 x word(byte)
예제1)32bit 컴퓨터 16주소버스 있을떄 최대 접근 가능한 메모리= 2^16 x4byte=256kb 가 답이고 MAR의 bit수는 16 이였습니다. 이말은 즉, 2^16 개의 주소 어드레스를 갖고 한 어드레스안에 32bit를 저장 함으로 총256kb
를 저장할수있다고 제가 이해한 바입니다.
하지만 또 글을 보다가 32bit CPU는 4gb 용량 만을 사용하고 그 이유는 32bit어드레스로 2^32(4gb) 만큼의 주소만을 만들기 때문 이라고 읽게되었는데, 32bit 어드레스bus 말고도 32bit 대이터 bus도 있으니,
32주소버스와 32데이타버스 를 가진 램이 있다면 (2^32 주소개수와 한주소에 32bit저장), 이 cpu로 예제1)과 같은 방식처럼 총 메모리 용량을 구한다면 4gb 이상 접근 가능 한것이 아닐까 라는 의문이 들었습니다.
보통 램은 한 주소에 꼭 1byte 만 저장 가능 한 것인지,,,램에 대해 보다보면 데이터bus가 32bit크기인것도 있는거 같은데 그럼 버스만 32bit일 뿐 한주소에는 8bit만 저장 되는것인지요,,
두서가 없는 글이 였지만 읽어 주셔서 감사하고 좋은 답변 기다리겠습니다.^^
Commented by 히언 at 2012/03/30 12:24
메모리 용량 구하는 공식은 제대로 이해하셨습니다.
다만, 어떻게 운용할 것인가의 문제인데요.
일단 32개 주소버스라면 일단 4G개의 주소를 표현할 수 있겠지요?

그리고, 말씀하신대로 32bit 데이터 버스라면 4byte씩이니까 16G까지 되어야 겠지요?
그말도 맞습니다.

그런데, 여기에서 문제는
16G까지 cover는 가능하지만 byte 당 접근이 안된다는 점이에요.
32 address 32 data 지만 표현할 수 있는 주소는
0, 4, 8, 12, 16, 20..... 이렇게만 표현할 수 있겠지요?

0을 지정하면
무조건 4byte씩 0,1,2,3을 access하게 되는거구요,
그러면 1,2,3 을 따로 인식하려면 mask를 씌우는 일을 해야겠지요?

그러니까 불가능한 건 아니지만, 위와 같은 식으로 구현되어야 되는거에요.

주소는
1byte당 한개의 주소를 갖는다고 보시면 돼요. word크기와 상관없이
그래야, byte당 access가 가능하겠지요?

어떻게 구현하느냐의 문제라고 보시면
될 것 같아요~

음음음~
Commented by soto at 2012/04/19 23:43
아주 잘 아시네요. 전문가신데요? ㅎㅎ
무엇보다 가장 중요한 것은 CPU이지 않을까 싶어요.
램을 어떻게 구성할 것인가는 아무래도 어떤 CPU냐에 따라 결정이 되는 것 같아요.
어떤 제품을 만들든지 가격대 성능을 최우선으로 한답니다.
그래서, 디자인을 하고 설계를 하다보면 램을 16bit, 32bit든 결정을 하죠. ㅎㅎ
Commented by 최강현 at 2012/03/30 15:54
음.. 그러면 램을 32bit 를 한 주소에 저장 할수 있지만 byte당 access를 할수 없으니 cpu에게 전혀 필요가
없어지는 말씀 이신가요?

그래서 램은 byte를 한 주소에 저장을 하겠금 만들고 주소를 0,4,8...이런식으로 표현하여 0주소안에 4byte가 들어가고 각각의 주소를 주어 byte씩 access를 가능 하게 한다...는 말씀..이신지^^..

4byte이가 필요할떈 0123의 주소를 한꺼번에 가지고 오고... 그럼 램의 있는 데이터 버스는 한 주소에 몇bit를 저상할수 있다는 개념보다는 cpu가 0123의 주소에서 4byte의 데이터를 한번에 가지고 올수 있게 한다는 개념으로 받아드려야 하는지요?


그럼 제 결론은 16gb(32주수비트 와 32 데이터 버스 로,한 방에 32bit씩 저장가능)램이 존재 가능 하고
32bit cpu로 16gb 램을 access 할순 있지만 byte씩 접근 할수 없으므로 전혀 필요가 없기때문에
대부분 램은 한주소에 byte만을 저장 하게끔 만들어 지므로 32cpu는 32bit주소 레지스터 뿐이므로 2^32만큼의 주소밖에 만들어 access한다고 보면 될련지요..
아, 그리고 성의 있는 답변 정말 감사합니다. 제가 지금 타지에서 공부중이라 벌써 이문제로 1주간 혼자 끙끙하다가 드니어 답을 듣게 되는 희망이 보이네요 어떻게 감사 드려야 할지 ..^^;
Commented by 히언 at 2012/03/30 16:12
넹, 맞습니다.

ㅎㅎ 그냥 간단하게,
주소는 1byte단위다 라고 생각하시면 됩니다.
그러니까 32bit data bus는 0x0를 access하면 자동으로 0x0~0x03 까지 읽어들인다고 생각하심되요~

자주 놀러오세요~
Commented by 히언 at 2012/03/30 17:11
그런데, 여기 강좌중에 이런 글이 있던가요?
음.. 제가 기억이 잘 안나서...
Commented by 民族 at 2012/04/05 08:23
안녕하세요 선배님깨서 추천해 주셔서 한번 들러봤습니다..

이제 처음 시작하는 개발자 단계인데 대학때 별로 공부한게 없어서 막막하네요

일단 책부터 구입하고... 읽어보구... 자주와서 질문 하겠습니다 !!!
Commented by 히언 at 2012/04/05 12:01
반갑습니다.
그리고 환영합니다.

자주 놀러오세요~~!!
기다리고 있겠습니다. ^^
Commented by 예비팬더 at 2012/04/08 23:46
올바른 질문에 올바른 답이 나오는데요. 올바른 질문을 잘 할수 있을지는 장담할수없네요.
제가 옛날옛날에 인텔 8086을 공부했을때였는데요. 그때 메모리 주소 1 Mbyte에서 사용자가 사용할 수 있는 메모리는 640 Kbyte였습니다. 하지만 640 Kbyte역시 모두 사용할 수 있는것은 아니였구요. 메모리가 처음시작하는 0x00000h에서 1 Kbyte영역은 인터럽트 벡터 테이블이라고 불려서 인터럽트가 발생되면 어떤 인터럽트가 발생되었는지에 따라 오프셋으로 찾아갔었습니다. 그때 제가 배웠던 방식은 오프셋에 찾아간 메모리에 인터럽트를 위한 루틴이 있는 주소가 저장되어 있었고 그 주소는 640 Kbyte 상부에 있는 사용자가 사용할 수 없는 영역에 있는 것으로 배웠어요. ARM을 배우면서 인텔 리얼모드 방식과 차이가 나지 않는다는 것을 알았습니다. 근데 ARM에서는 인터럽트가 발생되었을때 오프셋에 따라 처리를 위한 메모리주소를 찾아가는데 그 루틴코드들은 어디에 위치하고 있는지 잘 모르겠습니다. 예를 들면 인터럽트 벡터 테이블 0번은 리셋인데요. 리셋을 위한 기능을 위한 코드 주소가 0번에 저장되어 있다면 그 주소가 가리키는 리셋처리루틴은 어디에 위치해야 하는가 입니다.
제가 제대로 질문을 던진건지 모르겠네요.
Commented by 히언 at 2012/04/09 12:38
안녕하세요~~

이건 말씀하신대로 0x0번에 리셋처리 루틴 주소가 들어 있으니까,
어디든 리셋처리 루틴이 들어가 있는 주소를 가리키기만 하면 되어요.

대신 bootloader에 reset vector의 처리 내용이 포함되어야 겠지요?

NOR+PSARM combination일 경우에는 별로 문제가 안되는데,
NAND+SDRAM combination일 경우에는 RAM init을 하기 전에
사용할 수 있는 작은 RAM 영역이 MCP에 딸려 있어요.
이 부분이 보통 high vector로 bootloader가 위치하는 영역이고요,

특별히 low vector로 그 동작을 하게 하는 경우에는
bootloader 동작이 끝난 후에 (SDRAM init)
low vector로 vector table을 복사해 넣은 후에
low vector로 사용할 수 있도록 co processor를 다시 설정해서 쓴답니다.

음음.
Commented by soto at 2012/04/19 23:52
아래의 코드를 참조하세요.

두 개의 파일에서 답변을 를 찾을 수가 있습니다.
startup.s : ARM 어셈블리
linker.ld : 컴파일 했을 때 실행코드 시작번지 지정

<startup.s>

EVT:
@-----------------------
@Main Routine
@----------------------
b ResetHandler <<- 컴파일을 했을 때 이 주소가 0x0번지가 된답니다. linker.ld에서 지정
b . -- ResetHandler 레이블로 점프를 해서 리셋처리루틴으로 갑니다.
b .
b .
b .
b .

ResetHandler:
bl Watchdog_Disable
bl Clock_Management
bl Memory_Initialization
bl Stack_Initialization
bl Branch_Main


<linker.ld>
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(EVT)

__TEXT_START__ = 0x30000000; <<-- 0x0 코드 시작 번지를 지정함
__DATA_START__ = 0x30010000;
__STACK_END__ = 0x30090000;


Commented by 예비팬더 at 2012/04/09 20:23
히언님 책을 보면서 임베디드 개발에 책 한권으로 완성될 수 있는가 하는 걱정이 많습니다. 책에 모두 수록될 수 없는 이야기가 많이 있을 거라 생각을 하거든요. 어셈블리만 하더라도 다른 책을 참고하라는 말을 하셨더군요. 그외 MicroC/OS-II 실시간 커널이라는 책을 보려고 하는 중입니다. 저자가 Labrosse에요. 근데 저는 리눅스, 그중에서도 안드로이드에 많이 끌리거든요. 어떻게 하는 좋을까요? 히언님이 쓰신 책에서도 RTOS에 대해 설명을 해 주셨던데요. 운영체제 공부가 하루이틀만에 끝낼 수 있는게 아니라서 방향을 잡을 수 없어요. 리눅스는 우선 디바이스 드라이버를 먼저 공부하려고 합니다. 유영창 님이 쓰신 리눅스 디바이스 드라이버를 보려고 해요. 올바른 지도 부탁드립니다.
Commented by 히언 at 2012/04/10 00:14
으흠~

책 한권으로 임베디드 개발이 가능한가? 라는 질문에는 어려울 수 있다는 말씀을 드리고 싶습니다.만. 더 많은 공부를 하기 위한 Fundamental에 Focus 맞추었다고 보시는 것이 더 옳을 것 같습니다. 사실 더 많은 지식을 흡수하려면 기본이 확실해야 되는데 그게 되지 않아서 안되는 경우도 많거든요. Embedded Recipes는 언제라도 옆에 두고 잘 모르는 것들이 나올 때 다시 한번 들춰보는 것도 좋을 수도 있겠다는 생각이 듭니다~ 사실 임베디드 개발을 하시려면 알아야 할 것이 한두가지가 아니거든요~~ ^^ 다른 책에 대한 평을 하기 보다는 다독도 많은 도움이 되리라 생각해요~
화이팅이에요~
Commented by soto at 2012/04/20 00:06
저도 RTOS에 관심이 많은데요, 정말 반갑습니다.
처음에 Linux로 시작해서, uC/OS2에서 Android까지 모두 해 봤습니다.
결론은 어떤 RTOS는 구현하는 방식의 차이가 있을 뿐 핵심은 모두 같았습니다.
그래서 어떤 RTOS을 공부하시든지 하나의 RTOS 깊이 있게 공부해 보세요.
경험상 Linux를 것보다 uC/OS 먼저 깊이 있게 해 보세요.
컴퓨터에도 올려서 해 보시고, ARM 보드에도 올려 보시고, AVR과 같은 8bit 마이컴에도 해 보세요.
이 과정을 통해 RTOS의 용어나 용도를 잘 아실 수 있으리라 봅니다.
더블어 RTOS 포팅은 OS만 이해해야 되는 것이 아니라 포팅하려는 CPU의 특징도 알아야 할 수 있으니 상당히 많은 양의 학습이 되어 질거라 봅니다.
그러고 나면 다른 RTOS에 도전해 보세요.
현업에서는 정말 다양한 RTOS를 사용한답니다.
리눅스에서 디바이스 드라이브를 원하신다면,,,
역시 리눅스 커널을 어느 정도 이해를 해야 하고, 포팅하려는 CPU도 이해야 만들 수 있으니,
리눅스 커널 컴파일은 해 보셨는지요?
저 같은 경우는 하루에 30번 이상씩 커널 파일을 해 보면서,
커널의 옵션의 의미를 파악하고, 그 세부적인 항목에 대해 따로 공부를 했었습니다. ^^

Commented by 마천 at 2012/04/10 09:11
히언님 책 내용을 요약한 PPT파일은 없나요.
Commented by 히언 at 2012/04/10 10:16
음~ 넹 ppt는 없어요 ㅠㅠ
Commented by 예비팬더 at 2012/04/18 16:27
다음 코드는 데이터의 암호화 복호화에서 복화화 알고리즘을 적은겁니다. 근데 잘 실행이 안되요. 어디에 잘못이 있는지 봐주세요. 코드가 길어서 많은 공간을 차지해서 양해를 구합니다.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define STRSIZE 12
#define BUFFSIZE 256

int Decode (char *pkey, char *result){
char orgstr[] = "올바른 데이터";
char decode[STRSIZE + 1];
char *pd = decode;
int i;
for (i = 0; i < STRSIZE; i++)
*pd++ = *pkey++ ^ *result++;
*pd = '';
return strcmp(orgstr, decode);
}

int main(int argc, char *argv[]){
FILE *pf;
char filebuff[STRSIZE + 1];
char *pstr = filebuff;
char consbuff[BUFFSIZE + 1];

if (argc != 2 || !strcmp(argv[1], "/?") || !strcmp(argv[1], "-?")){
fprintf(stderr, "키 있는 실행 프로그램nn"
"사용 방법 : DECODE 키데이터n");
exit(1);
}
strcpy(consbuff, argv[1]);

if ((pf = fopen("efile", "r")) == NULL){
fprintf(stderr, "파일 오픈 에러입니다.n");
exit(1);
}
else{
int i;
for (i = 0; i < STRSIZE; i++)
*pstr++ = fgetc(pf);
if (Decode(consbuff, filebuff) == 0)
printf("이 프로그램을 실행할 수 있습니다.n");
else
printf("무효 키 데이터가 입력되었습니다.n");
}
fclose(pf);

return 0;
}
Commented by 히언 at 2012/04/19 17:32
ㅎㅎ 제가 답을 해드리기 보다는 질의를 통해서 깨달아 가는 것이 가장 배움에 빨리 이르는 길이라 생각하고 있습니다~ ^^ 제가 질의를 하자면
1) Input과 원하는 output이 무엇인지 부터 확실하게 정의해 주세요. ^^
Commented by soto at 2012/04/19 19:51
안녕하세요.
실행해 봤는데, 뭐가 문제죠?
Commented by 예비팬더 at 2012/04/23 13:52
제가 사용하고 있는 C 언어는 MinGW, GnuWin32, RSXNT를 섞어서 사용하고 있습니다. 그리고 가끔 Visual C++도 사용하는데 회사와 버전에 따라 차이가 있더군요. 어떤 경우는 전혀 이상이 없는데도 불구하고 컴파일이 되지 않는 이상한 현상이 발생되기도 하구요. 이 코드는 다시 제가 확인해 보겠습니다. 답변 감사합니다.
Commented by 암정복 at 2012/04/18 23:47
마이크로프로세서 강의에서 ARM에 대해 배우고있는데 올려주신글들이 모두 도움이많이됩니다ㅋ 이해하기쉽게 써주신것같아요!
Commented by 히언 at 2012/04/19 17:34
ㅎㅎㅎ 감사합니다~~ 자주 놀러오셔서, 고견도 풀어놔 주세요~
Commented by soto at 2012/04/20 05:57
감사합니다....
Commented by 예비팬더 at 2012/04/19 11:08
/* 오름차순 쉘 정렬 */
void ShellAscendingSort(char a[], int n){
char temp;
int i, j;
int hop = n/2; // 처음에 hop폭을 n의 반으로 하고 hop폭을 줄입니다
while (hop > 0){
j = hop;
while (j < n){ // j에서 구한 i의 위치와 i+hop위치의 요소를 교체합니다
i = j - hop;
while (a[i] > a[i + hop]){
temp = a[i];
a[i] = a[i + hop];
a[i + hop] = temp;

if (i < hop) break; // <=== 이 부분에서 이 코드가 어떤 기능을 하는지
else i -= hop; // <=== 잘 모르겠어요. i -= hop가 정말 모르겠네요.
}
j++; // j를 증가시킵니다
}
hop /= 2; // hop폭을 반으로 합니다
}
}
Commented by 히언 at 2012/04/19 17:34
이것 역시 질의를 통해서 스스로 깨닫는 방법으로 해보시는 건 어떤가 합니다~
제 질의는
1) 여기에서 i는 무엇이라고 생각하십니까~?
Commented by soto at 2012/04/19 23:36
오랜만에 보는 코드네요.
어디서 봤더라??
앗..이건 자료 구조 수업시간에 내줬던 레포트인데...?
자료 구조 수업은 정말 정말 중요합니다.
아래 사이트 참조하세요.
http://www.dotnetkorea.com/boardview.asp?BoardName=CLanguage&Num=111&ScrollAction=Page16
Commented by 예비팬더 at 2012/04/20 10:28
히언님, 바로 설명을 해 주시지 않으시니 조금 얄미워(?)졌어요. 근데 다시 생각해 보니 히언님께서 저에게 소크라테스식 방법으로 저를 지도해 주시는 게 아닌가 싶어요. 아니면 Do It Yourself 정신으로 스스로 알아가면서 공부하라고 하시지는지요. 아니면 어떤 의미로 하신 말씀이신지요.
Commented by 예비팬더 at 2012/04/20 11:19
soto님께서 쓰신 임베디드 스케치도 봤어요. 만나뵙게 되어서 반갑습니다. ^^
Commented by 히언 at 2012/04/20 15:52
^^ 뭔가 알게된다는게
기쁨인데요, 그게 자기주도적 학습이라고 생각해요.

질의를 통해서 생각해 보면
잘 모르겠던 것도
매직아이 떠오르듯이 아하! 하게 되는 것들이
기억속에도 오래남고 좋은 학습방법이라고 생각해요!

그런면에서 질의로 학습을
선호하는 편입니다요~.
Commented by 예비팬더 at 2012/04/23 13:49
잘 모르겠네요. 쉘정렬은 블록으로 단계별로 나누어서 삽입정렬하는 방식인데요. 변수 i 는 각 블록의 첫번째 부터 차례로 비교 교체에 필요한 변수인것 같습니다만, i 가 hop 보다 작은 수이면 반복문을 그냥 끝내고 반대로 크면 i - hop 로 i 를 설정하는 것이 저는 이해 할 수가 없네요. 삽입정렬이 지금 이 코드에 어떻게 녹아있는지도 이해할 수가 없습니다. 블록이 2개 이상일때 각 블록에 있는 자리수와의 삽입정렬이 제 눈에는 보이지 않습니다.
Commented by 히언 at 2012/04/25 09:08
^^ 그래요?
쉘 정렬은 최종 블록을 1개씩을 보는거 아니었나요? 흠흠.
Commented by soto at 2012/04/26 05:34
열심히 공부하시는 모습이 정말 좋아 보이네요.
앞으로 좋은 일들이 많을겁니다.
성공은 열정을 가진 사람을 쫓아다니거든요..ㅎㅎ
Commented by soto at 2012/04/30 09:06
저도 정말 반갑습니다. ^^
Commented by 초보자 at 2012/04/26 11:26
안녕하세요. 좋은글 잘 보고 있습니다. 질문이 있어 이렇게 글을 남깁니다.
Linux Device Driver와 system call (시스템 함수)와는 어떻게 다른가요? 그리고 Platform device driver라는 말도 있던데 이건 또 뭔지 궁금합니다. ^^
Commented by soto at 2012/04/30 09:05
안녕하세요.
공부하시다보면 이러한 알송달송한 용어들 때문에 진도가 잘 안나갈때가 많이 있죠.
저도 한참 이런 용어들 때문에 머리 아파 했던 일들이 많았었죠. ^^;
본론으로 들어가면,
Linux Device Driver는 하드웨어 장치를 제어하는 프로그램들이라고 생각하시면 됩니다.
간단한 예로, 안드로이드 폰에 카메라 기능을 사용하고 싶을 때 어플리케이션은 Camera Device Driver로 신호를 보내 주면 됩니다. 즉, 어플리케이션 개발을 할 때 Linux Device Driver 프로그램 쪽으로 몇 가지 신호만 보내 주면, 카메라가 알아서 동작을 한답니다. 카메라 동작은 Linux 커널이 개입해서 진행을 하게 됩니다.
System Call을 설명하기 전에 먼저 Linux 같은 경우 어플리케이션 영역과 커널 영역으로 크게 두 가지로 나눠지는데, 어플리케이션 영역에서 커널 영역으로 접근하기 위해서는 반드시 system call이라는 함수를 사용해서 접근을 해야 됩니다. 앞서 말씀 드린바와 같이 카메라 어플리케이션에서 카메라가 동작되기 위해서는 System call 함수를 사용해야 하고, 그러면 카메라 동작 시키는 신호를 커널 영역으로 보내고, 커널은 camera device driver에다 다시 신호를 넘겨 줘서, 비로소 카메라가 동작을 하게 된답니다.
Platform device driver는 Linux device driver에 국한되지 않고, Android이든, WindowsPhone 든, iPhone 이든, Platform 형태로 개발되는 device driver를 묶어서 부르기도 한답니다.

답변을 드리긴 했지만..좀 뭔가가 부족하다는 느낌이 드네요. ^^;
조금이라도 이해가 되셨기를 바래요.

열공하세여~~!!

Commented by 초보자 at 2012/04/30 15:46
아, 그렇군요. 시스템 콜 함수가 Device를 직접 건드리는 경우와 시스템 콜이 Device Driver를 거쳐서 Device를 건드리는 경우 두가지가 있는 줄 알았답니다. ㅎㅎ
그리고 Platform Device Driver는 Linux Driver Model(LDM)공부하다가 나온 용어인데, Kobject니, Platform Device(Driver)니,Misc? 니 해서 너무 정신이 없더라구요. ㅎㅎ
머리가 나쁜건지... ^^
답변 감사드립니다. 도움이 되었습니다. ^^
Commented by soto at 2012/05/01 09:48
자주 놀러 오세여~~!!
Commented by 멍청이 -_-; at 2012/05/03 13:52
안녕하세요. SOTO님 강의 내용중 Startup 파일과 관련된 내용중에 메인바이너리가 뭔지 잘 모르겠습니다. ^^ NOR Flash는 메인바이너리에 startup파일이 있고 NAND Flash는 부트로더에 있다고 하셨잖아요. NAND Flash는 SDRAM(? SRAM인가요?)에 명령어 바이너리를 옮겨서 실행하기 때문에 부트로더가 필요한거 같긴한데... 잘 모르겠네요. 메인바이너리가 무엇이고, 왜 NAND Flash에서는 부트로더가 필요한지...
Commented by soto at 2012/05/05 20:55
안녕하세요.
NOR Flash나 NAND Flash나 모두 메모리잖아요. 컴퓨터로 얘기하면 하드 디스크와 유사한 개념이죠.
컴퓨터를 켰을때, 하드디스크가 있든 없든 일단 부팅화면이 나오고 나서, 하드디스크 유무를 판단한답니다. 여기까지는 BIOS가 처리를 해 주잖아요. 그 이후 하드 디스크(NAND들이 모여 HDD가 되죠)가 있다면, 윈도우가 있는지 확인한 후, 있으면 윈도우 부팅이 되잖아요.

NAND Flash와 같은 원리입니다. 일단 NAND에는 Boot loader 바이너리(BIOS와 같은 역할)와 메인바이너리(윈도우)가 있답니다.
NOR은 Boot loader 바이너리와 메인바이너리가 함께 들어 있다고 보시면 됩니다. 대신 NAND Flash보다 절대적으로 용량이 크지 않기 때문에 uC/OS와 같은 UI가 필요없거나 중요하지 않는 시스템에서 많이 쓰이구요, NAND Flash처럼 용량이 큰 곳엔 Android난 WindowsPhone와 같은 UI가 중요한 시스템에서 많이 쓰인답니다.
그리고, 가장 중요한 것은 최근 현황을 보면 NOR Flash 가격에 비해 NAND Flash 가격이 더 싸고, 용량도 크기 때문에 구지 NOR Flash를 사용할 이유가 없지 않을까요?

즐거운 하루 되세요. ^^
Commented by 아기공룡 at 2012/05/05 01:24
올1월에 군전역한 컴공3학년생입니다. 임베디드소프트웨어 엔지니어가 되고자 구글링 구글링 한덕에 이런 좋은사이트까지 오게된지도 어느새 세달되었네요. 눈팅만... 이전에 c언어로 프로젝트경험도있고 해서 다시 도전하려했더니 이노무 C언어가 저를다시 붙잡내요 안했더니 init.... 포인터부터 자료구조 알고리즘 불태우면서 열심히하고있습니다. 학교에서는 운영체제를 배우고있는데 세마포어,모니터를 지나고있네요. 여기까진 굿굿굿. 근데 Soto님의 글을보다가 arm보드에 ucos2 포팅하면서 os의 전체적인 흐름을 익히셨다고들어서 저도 음 운영체제를 배우고있는 입장이니까 지금 포팅에 들어가면 되겠다 싶다는 느낌이 팍팍오는데 시기상조인지 궁금합니다. 뱡향제시좀 부탁해요!! soto님 히언님 도와주세요 ㅜ
Commented by soto at 2012/05/05 21:18
안녕하세요.
저도 컴공 3학년때부터 OS에 관심을 갖게 되어서 지금까지 왔네여~~! ㅎㅎ
잘 아시다시피 OS공부하실 때 우선적으로 하셔야 될 일이 용어 정리랍니다.
그런데 용어 정리라는게 글을 읽을 때는 이해가 되지만, 돌아서면 그리고 시험 문제만 나오면 늘 헤갈리고 컴공생들을 힘들게 하죠. 저는 그 당시 이론적으로만 알고, 무조건 암기만 했는데 한계가 있더라구요. 그러다가 학교 졸업하고 회사에서 직접 uC/OS를 포팅하면서 확실한 감을 잡았습니다.

결론은,
첫번째, ARM보드가 있다면 우선 uC/OS 포팅을 해 보세요.
기냥막 해 보세요.
처음부터 완벽하게 공부하고 이해하고 나서하려면 못 합니다.

두번째, 소스코드를 하나씩 빼보세요.
포팅이 완료 됐다면 책에서 나온 용어를 중심으로 소스 코드를 빼는 겁니다.
예를 들면, 세마포어를 구현한 코드가 있다면, 그 부분을 빼고 다시 포팅을 해 보는 겁니다.
그러면 왜 세마포어가 필요한지를 알 수가 있을 겁니다. 이런 씩으로 하나씩 test를 해 보면서 익혀 보세요.

마지막으로, 또 다른 OS 포팅에 도전해 보세요.
uC/OS를 포팅이 끝나고, 몇 가지 Test를 했다고 모두 이해가 되는 것은 아닙니다. 반드시 다른 OS랑 비교를 해 보셔야 완벽히 이해가 잘 됩니다. 아무래도 소스 코드를 볼 수 있는 리눅스는 어떨까요? uC/OS에 비해 무진장 복잡한 구조로 되어 있긴 하지만 비교 자료로는 충분 하리라 봅니다. 앞서 말씀 드린데로, ARM 보드에 포팅을 권하는 이유는 다양한 OS를 포팅할 수 있기 때문이랍니다. 하나의 보드에 다양한 OS를 포팅하시다보면 더 빨리 감이 와요~~!!

한가지 당부드리고 싶은 것은 리눅스를 먼저 공부하지 마세요. 대부분의 학생들이 리눅스를 만만하게 보다가 그냥 OS 공부를 포기 하거든요. 차라리 그러지 말고 비교적 간단한 OS를 접하고, 충분히 이해하고 나서,,,,비교용으로 공부하시면 정말 좋을 것 같네요.

열정을 가지고 공부하시는 아기공룡님....
언제든 오셔서 글 남겨 주시면 최선을 다해서 답변을 드릴께요.

감사합니다.
즐거운 주말 되세요...

Commented by 예비팬더 at 2012/05/06 09:19
안녕하세요. 히언님 그리고 soto님, 어리석은 우리들에게 빛이되어 주셔서 감사합니다. ARM프로세서를 공부하면서 어셈블리를 공부하게 되는데요. 공부하면서 ARM이 장착된 개발보드를 사용하지 않고 일반 윈도우나 유닉스 환경에서 ARM어셈블리를 컴파일하고 실행할 수 있는 환경을 만들수는 없나요? 책으로 보면서 이해하는 것도 좋은데 직접 타이핑을 해서 실행해 봐야 할것 같더라구요. 예를 들면 가상머신으로 해서 실행하거나 아니면 ARM기계어를 실행할 수 있게 하는 유틸리티 같은것도 있을것 같은데요. 그런거 없나요?
Commented by 쓰바라시 at 2012/05/07 01:16
http://kldp.org/node/62221 ARMulator나
http://www.thefreecountry.com/emulators/arm.shtml QEMU를 포함한 여러가지

히언님 보다 빨랐다! 호잇!
Commented by 히언 at 2012/05/07 08:35
음? 쓰바라시?
Commented by soto at 2012/05/07 11:47
공부하는데 있어서 사실 가장 중요한게 Money죠.
그런데 조금 더 길게 생각해 보면,
이왕 공부하는 거 확실하게 해 두시면 평생 자신의 지적 자산이 되는 것 만큼 투자하는 것도 좋을 것 같다는 생각이 먼저 드네요.
조금만 알아보시면 ARM 보드를 비싼 가격이 아니더라고 살 수 있는 보드가 많이 있답니다.
학생 시절 5~10만원이면 비싸다고 생각될 수도 있지만 반면,
친구들 만나는거 몇 번 줄이고, 밥 먹는 것 조금 줄이고, 용돈 좀 모으면 가능하지 않을까 싶습니다.
또 다른 방법은 친구 몇 명이서 조금씩 분담해서 보드를 사고, 함께 공부하거나 공유하는 것도 방법이지 않을까 싶습니다.
정말 돈 안 들이고 공부하고 싶다면, 학교 대학원생 랩실 같은 곳에 가서 함께 공부하고 싶다고 담당 교수님께 부탁을 드려 보는 것도 좋을 것 같네요.
저는 대학 4학년 때 담당 교수님에게 보드 사 달라고 했었는데, 졸업하고 나서야 보드 구매 절차가 끝난다고, 할 수 없이 함께 공부했던 친구끼리 돈을 모아서 샀습니다. 피 같은 돈으로 보드를 사서 그런지 정말 열심히, 열심히 공부했었던 기억이 나네요. ^^;
미래가 깜깜하고, 앞으로의 험난 한 생활들이 두려웠던 시기였던 것 같네요.
하지만 자기 자신을 믿고, 두려움에 물러서지 않고 끝까지 공부를 택하는 학생들에게 좋은 날들이 반드시 오리라 확신합니다.
제가 학교 졸업 후 직장에서 메니저 직책을 달면서부터 그런 학생들의 눈빛은 남달라 금방 메니저 눈에 띄게 마련입니다.

그러니 열공하세여~~!!!

Commented by 궁금해 at 2012/05/07 14:57
혹시 책에대한 정오표를 구할 수 있는지 알고 싶어요. 댓글로 많은 분들께서 틀린점 올리시던데...
실제로 초기에 구입하신분들은 어디가 수정되었는지 잘 알수가 없어서 좀 답답합니다.
없다면 혹시 정오표 정리하신 것을 올려주실 수 있는지도 좀 알고싶어요~
책 정말 좋습니다~ ㅋ
Commented by 히언 at 2012/05/07 19:55
ㅎㅎㅎ 감사합니다~
예쁘게 봐주셔서~
정오표는 따로 작업된 게 없어서 확실하게 말씀드리기 어렵지만,
이렇게 말씀을 해 주시니,
빠른 시일내에 정오표를 만들어 pdf로 공유할 수 있도록 하겠습니다.

감사합니다~~~~
Commented by soto at 2012/05/09 03:09
감사합니다.
거기까지는 생각을 못 했네요.
빠른 시일내에 만들어 올릴께요.

즐거운 하루 되세요.
Commented by 1212 at 2012/05/24 17:07
안녕하세요 열심히 공부하고 있는 학생입니다.
SIMD명령어를 한 결과를 CPSR에 있는 GE비트를 보고 영보다 크거가 같은지 아닌지를 알수가 있는데요
이 비트필드를 봐서 좋은점이 먼가요? 즉 이 비트필드를 이용해서 좋은점이 멀까요? 궁금합니다 고수님들
Commented by 히언 at 2012/05/24 20:46
http://recipes.egloos.com/5028421 이게 도움이 될라나요?
Commented by 1212 at 2012/05/25 09:26
암 레퍼런스 메뉴얼을 보면
GE[3:0] 비트 필드가 추후에 SEL이라는 명령어에 영향을 준다고 되어있습니다
그대로 레퍼런스 대로 해석해보면
R[d]<7:0> = if APSR.GE<0> == ‘1’ then R[n]<7:0> else R[m]<7:0>;
R[d]<15:8> = if APSR.GE<1> == ‘1’ then R[n]<15:8> else R[m]<15:8>;
R[d]<23:16> = if APSR.GE<2> == ‘1’ then R[n]<23:16> else R[m]<23:16>;
R[d]<31:24> = if APSR.GE<3> == ‘1’ then R[n]<31:24> else R[m]<31:24>;
이렇게 저장을 해서 좋은점이 멀까요? 정말 궁금합니다.
이걸 하는 목적이 먼가요
Commented by soto at 2012/06/09 07:00
Commented by baba at 2012/05/25 08:56
THUMB-2로 컴파일을 했을 때 ARM 명령어와 THUMB 명령어①가 섞여 있다고 포스팅을 통해 배웠습니다.. 그런데
사용자가 c로 짠 후에 Thumb2모드로 컴파일 해서 암 명령어가 썩여나올텐데
만일 프로그래머가 어셈을 Thumb2 스테이트에서 돌릴수있도록
Thumb2 명령어로 짠다고 가정을 해볼게요! 그럼 어떠한 ARM 명령어를
가져다가 쓸수잇는지.. 궁금합니다.. 모든 암명령어를 가져다가 쓸수 있는건 아닌거 같아서요.
ㅜ.ㅜ
Commented by soto at 2012/06/09 07:14
안녕하세요.
모든 암 명령어를 가져다 쓸 수 있는 건 아닙니다.
중요한 것은 개발자가 어떠한 ARM 명령어를 가져다 쓴다고 해도
컴파일을 할때 역어셈블러 코드가 새로 만들어지면서
어떤 코드로 될지 모른다는 겁니다.
Commented by 예비팬더 at 2012/06/08 07:07
히언님, soto님 안녕하세요. 자주 이곳 블로그에 방문을 합니다만 댓글을 남기지 않아서 잘 모르시죠. 저 자주 이곳에 옵니다.
제가 컴파일러를 가급적이면 gcc를 이용합니다. 오픈소프트웨어의 자유와 정신에 따르고자 하기 때문이죠. ARM 컴파일러도 가능하면 arm-gcc를 이용하려고 합니다만 아직 보드가 없이 공부를 하고 있어요. soto님 말씀처럼 비싸더라도 사서 공부를 하면 그 값만큼 많이 배울수 있는게 사실이에요. 하지만 상용 소프트웨어를 사용하기 보다는 공개소프트웨어를 고집하는 저로서는 보드없이도 사용할 수 있는 에뮬레이터에 대한 코드를 배우고 싶은 욕심도 있습니다. 실제 보드를 이용하는 것과 같을 수는 없지만 윈도우즈나 리눅스 운영체제위에서 arm-gcc를 이용할 수 있는 에뮬레이터가 있는지 알고 싶습니다. 예전 쓰라바시 님이 에뮬레이터 하는 방식을 가르쳐 주셨는데요. 근데 아직도 잘 안되네요.
Commented by soto at 2012/06/09 07:32
안녕하세요.
저도 그 갈급함을 이해합니다.
하지만, 공부하려는 시간을 따져보면 에뮬레이트를 가지고 하는 것을 정말이지 추천하지 않습니다.
아마 이 글을 올리기 위해서 많이 에뮬레이트를 해보려고 노력을 했을 것이고,
안되면 또 다른 에뮬레이트를 찾아볼 것이고,
그러다 보면 정말 공부하려는 본질보다는 딴데로 시간 낭비만 하는 격입니다.
임베디드 보드...별거 없습니다.
ATMEL128(8bit)보드로 하셔도 됩니다. 일만원대입니다.
에뮬레이터 찾다가 시간 낭비하시는 것보다 정말 정말 좋습니다.
^^
Commented by 예비팬더 at 2012/06/09 18:22
soto님 저에게 좋은 조언을 해주셔서 감사합니다. 제가 예전에 8051을 이용해서 배운적이 있는데요. 지금 그런 프로세서를 공부하기에는 시대의 흐름에 따라 가지 못하는게 아닌가 싶습니다. ATMEL128은 어떤지 모르겠네요. 가급적이면 ARM으로 구입할 예정인데요. soto님이 추천해 주시는 보드로 구입하기로 하겠습니다. 가격은 10만원대로 생각하고 있어요. 개인적으로는 FALINUX에서 판매하는 보드가 있던데 그걸로 구입해 보는게 어떤가 싶어요. http://falinux.godo.co.kr/shop/goods/goods_view.php?goodsno=38&category=001
여기에 찾아가 보시면 G100-S3C6410 버전으로 나와있던데요. 괜찮은지 궁금해요. 아니면 좋은 보드가 있다면 추천해 주시기를 바랍니다. 보드는 노트북에 연결해서 사용할 겁니다. 그리고 펌웨어에 대해서 공부하려고 하는데 <임베디드 시스템 펌웨어 분석>(Ed Sutter 저, 성원호 역)이라는 책을 보려고 합니다. 그 책 괜찮은지 모르겠네요. 덤으로 드릴 말씀으로는 제가 임베디드를 공부하면서 가장 중심이 되는 표준 교과서는 히언님, soto님이 쓰신 책입니다.
Commented by 히언 at 2012/06/11 11:58
와홋! 예비 팬더님! 공부 열심히 하셔서 너무 좋습니다.
쏱오님~ 얼렁 보드 추천해 드리세요~
Commented by soto at 2012/06/12 04:00
안녕하세요.
좋은 보드가 많네요.
제가 보드를 산다면, 저 또한 삼성 보드 구매할 겁니다.
실제 현업에서도 많이 사용할 뿐만 아니라 오픈된 소스, 자료가 많아서
공부하기엔 딱인것 같아요. ^^;
다만, UART 사용이 편리한지 살펴보세염~~~!!
Commented by 별별 at 2012/06/14 14:31
임베디드 시스템을 배위기위해 자주 와야 겠어요. 임베디드 시스템 전문가를 모시고 있으니 관심이 있으시면 많은 지원을 ^^

Job Description: Functional safety S/W engineer
http://findjob.alba.co.kr/job/detail.asp?adid=13524064
Commented by 히언 at 2012/06/14 17:03
반감습니다~
Commented by soto at 2012/06/19 07:11
반가워요..ㅎㅎ
Commented by 예비팬더 at 2012/06/15 10:09
어제 보드가 도착했습니다. 그런데 어떻게 사용해야 하는지 깜깜하네요. 책으로 배우는 것과는 전혀 다른 상황입니다. 전혀 모르겠네요. 부트는 어떻게 시켜야 하는지 부터가 막막합니다. 도와주세요. 그리고 soto님께서 UART 사용이 편리한지 살펴보라는 말씀이 무슨 말씀이신지 모르고 일단 구입했습니다. 지금 제가 가지고 있는 데스크탑 컴퓨터는 프린터를 사용하기 위한 병렬포트는 있지만 RS232 포트는 없습니다. 물론 노트북에도 시리얼포트는 없구요. 일단 무엇부터 시작해야 하는지 가르쳐 주세요. 보드에 필요한 자료는
http://wiki.falinux.com/doku.php?id=product:g100_s3c6410
에 다 있습니다. 히언님, soto님과 함께 이곳에 오시는 모든 분들께 부탁드립니다.
Commented by 히언 at 2012/06/15 21:01
스펙을 읽어보진 않았지만, 아마도 uart로 연결해야 하는데, 노트북에 없다면, USB to Serial(UART) converter를 사셔서 접속해야 할듯이요!!
Commented by soto at 2012/06/15 23:56
안녕하세요.
아주 설래이는 시간을 보내고 있군요. ^^;

우선 USB to Serial 케이블을 구매하시구요. 그런 다음에 Serial 케이블을 준비해 주세요.
홈페이지에 보니 Serial 케이블은 보드 구매하실때 포함 되어 있네요.
그리고, 다음과 같이 연결하시면 됩니다.

[노트북 --- USB to Serial --- Serial --- Board]

하이퍼터미널과 같은 프로그램으로 환경설정해서 메시지 출력되는지 확인해 보세요.


보드를 보니 기본적으로 보드에 리눅스가 포팅되어 있군요.
아마 부팅하자마자 부트로더가 실행될 겁니다.
부트로더 메시지는 하이퍼터미널로 확인이 가능하구요.
부트로더 소스를 보시면 책에 나와 있는 것과 비슷할 겁니다.
리눅스 포팅이라면,

403-404 부분을 참고하시면 됩니다.

ARM 프로세서에 Linux 포팅을 위한 준비사항은?
http://recipes.egloos.com/5383584

Linux 포팅 완료까지의 절차가 어떻게 되죠?
http://recipes.egloos.com/5407905

만약, 리눅스가 아닌 RTOS가 전혀 없는 상태...
즉, 플래시 메모리에 아무것도 없는 상태에서 처음부터 해 보시려면 디버거 장비가 필요하구요...^^;

Commented by 질문자 at 2012/06/16 11:38
MMU를 완전 베껴 보자 - Memory Management Unit 강의를 보다 이해가 안되는 부분이 있어 질문 드립니다다. 책을 통해 이해하기로는 TTB는 4096개의 entry가 있고 각각의 entry가 1MB씩을 담당하니까 가령 2번째 entry의 경우는 Virtual Address의 0x00100000 ~ 0x00200000 부분이 Physical 주소의 어느부분과 매핑되어 있는지 기술되어 있는 것이라고 이해를 했는데요, 가령 그 두번째 entry가 coarse page table을 가리키고 있으면 그 coarse page의 각 entry는 1mb/256 = 4kb, 그러니까 각각의 entry는 TTB에서의 주소(두 번째 entry라고 가정) 0x00100000부터 4kb단위씩이 어느 physical address로 매핑되어 있는지, 또는 fine page table이었다면 1kb단위씩 어느 physical address로 매핑되어 있는건지 설명하는게 맞는건가요? 근데 여기서 이해가 안가는것은 coarse page table의 한 entry는 무조건 4kb 단위의 physical address랑 매핑되어야 할것으로 생각했는데 책을 보니 64kb 또는 4kb의 page로 매핑될수 있다고 되어 있거든요?? 이 부분에서 부터 갑자기 이해가 안가게 되었습니다. 예제를 들어서 조금 더 설명해주실수 있을까요??
Commented by soto at 2012/06/19 06:56
안녕하세요.
정말이지 MMU는 너무 어려운 것 같아요. ^^;
설명 드리기에 앞서, 간단히 정리해 드리고 싶은데,,어떨지 모르겠어요.

서울에 위치한 큰 아파트 단지 한 곳이 있어요.
아파트 가격을 알아보려고 아파트 사무실에 전화를 하니 이렇게 안내 해 주더군요.
"안녕하세요. 00 아파트입니다. 해당 구내번호 테이블 안내를 듣고 선택해 주세요."
10은 section 아파트단지구역
01은 coarse 아파트단지 구역
11은 fine 아파트단지 구역

10(section)을 눌렀더니 아파트 크기가 한 종류(1MB)밖에 없고, 총 4096개 아파트가 있다고 하네요.
01(coarse)을 눌렀더니 다시 한번 더 구내번호 테이블 안내 멘트가 나오네요.
- 01은 large 남방향 아파트 단지 구역
- 10은 small 남방향 아파트 단지 구역
여기서 01을 눌렀더니 아파트 크기가 64kb인 아파트들가 있다고 해요.
여기서 10을 눌렀더니 아파트 크기가 4kb인 아파트들가 있다고 해요.
11(fine)을 눌렀더니 다시 한번 더 구내번호 테이블 안내 멘트가 나오네요.
- 01은 large 동방향 아파트 단지 구역 64
- 10은 small 동방향 아파트 단지 구역 4
- 11은 tiny 동방향 아파트 단지 구역1
여기서 01을 눌렀더니 아파트 크기가 64kb인 아파트들이 있다고 하네요.
여기서 10을 눌렀더니 아파트 크기가 4kb인 아파트들이 있다고 하네요.
여기서 11을 눌렀더니 아파트 크기가 1kb인 아파트들이 있다고 하네요.

정리를 하면, 아파트 사무실 대표전화번호가 바로 TTBA이구요,
첫번째 구내번호 테이블 안내가 Level 1테이블이랍니다.
두번째 구내번호 테이블 안내가 Level 2테이블이랍니다.
TTBA기준 주소에 가보면 32bit 중에 가장 하위비트인 1,0 비트가 기준이 됩니다.
10, 01, 11에 따라 아파트의 크기와 아파트 방향이 달라진답니다.
특별히 01, 11은 크기가 각각 다른 작은 아파트들이 있는데,
한번 더 선택하도록 하는 Level 2가 있다는 거죠.
이곳에서 최종 결정을 한답니다.

도움이 되셨기를 바랍니다.
감사합니다.
Commented by 예비팬더 at 2012/06/17 15:02
히언님 , soto님의 조언으로 booting 성공했습니다. 제가 펜티엄 150, 램 32메가 구형 컴퓨터가 하나 있는데 그 컴퓨터에 있는 시리얼 포트로 연결해서 멋지게 성공했습니다. USB to Serial Converter 뭐 이런게 있는지 전혀 몰랐어요. 조만간 구입하겠습니다. 제가 구입한 보드는 히언님, soto님이 쓰신 임베디드 교재와 잘 맞고, 소스코드를 모두 제공해준다는 점에서 제가 원했던 보드 그 자체입니다. ARM Cortex 보다는 못하지만 만족합니다. 하마터면 임베디드 세계에 미아가 될 뻔했네요. 하하~ soto님께서 보드 구입을 권하신 이유를 알겠더군요. 직접 경험해 보지 않고 책만 보는것과는 많은 차이가 있어요. 앞으로 히언님과 soto님의 도움이 많이 필요할것 같아요. 잘 부탁드려요~~~
Commented by soto at 2012/06/19 05:58
안녕하세요.
우와...정말 멋진 경험을 하셨네요.
이제 입문을 하셨으니 더욱 열공하시기 바랍니다.
힘이 되어 드릴께요...
파이팅~~!!!
Commented by 히언 at 2012/06/19 14:27
화이팅!이에요.
이제 예비 팬더가 아니라 본격 팬더로군요.
Commented by 임예음 at 2012/06/19 02:51
작가님을 우연한 자리에서 뵙게 되었습니다.

책도 좋은데 잘생기셨더군요!!!!

저는 작가님 같은 분 만나서 결혼했으면 좋겠습니다!! >ㅇ<
Commented by 히언 at 2012/06/19 14:27
-,.- ;;;;
Commented by 예비팬더 at 2012/06/19 21:16
히언님, 그리고 soto님 이제 부트에 성공했는데 산을 넘으니 또 산이 보이네요.
리눅스는 플래시 메모리에 내장되어 있었지만 프로그래밍에 필요한 컴파일러는
없었어요. 보드를 제공한 업체에서 호스트에서 사용하기 위한 toolchain을
제공하지만 리눅스에서 사용하는 tool인것 같습니다.
제가 사용하고 있는 호스트는 윈도우 7입니다. 컴파일러는
http://winarm.scienceprog.com/winarm-tools/prepare-gnuarm-compiler-toolchain-for-windows.html
에서 제공하는 컴파일러를 사용하고 있어요.
arm-elf-gcc로 그 유명한 예제인 Hello World 프로그램을 윈도우 커맨드
프롬프트 창에서 컴파일을 하면 오류는 없지만 하이퍼터미널에서 타겟에 전송해서
실행해 보니 Segmenstation fault라는 에러가 나더군요. gnuwin32에 있는
file.exe 명령어로 실행한 결과 ELF 32-bit LSB relocatable,ARM version 1로 나와
제대로 컴파일은 된것 같은데도 타켓에서는 안되요.
히언님께서 쓰신 임베디드 레시피에서는 대체로 ADS중심으로 저술되어 있어요.
제가 arm gnu로 고쳐서 공부해야 하지만 gnu c/c++ 는 많이 써봤는데 gnu 어셈블리는
거의 사용해 본적이 없습니다. 그리고 <4장. ARM Assembly를 파헤쳐 보자 ADS vs GNU>
에서 예제로 나와 있는 helloworld.s를 arm-elf-as로 컴파일 하는 방법을 가르쳐
주세요.

그리구요... 히언님 정말 미남이신지 한번 만나보고 싶네요. soto님도 뵙구 싶구요...
Commented by soto at 2012/06/20 00:07
안녕하세요.
저도 뵙고 싶군요. ^^;

조금 정리를 해 볼 필요가 있을 것 같네요.
우선 타겟에 ARM core와 Linux가 포팅되어 있습니다.
이 의미는 Linux OS 기반하는 "Hello, World" 어플을 만들어야 된다는 것입니다. 즉, 보드를 제공한 업체에서 제공하는 Toolchain으로 어플을 만들어야 한다는 거죠. 커널 컴파일할때 사용한 ARM-GCC와 어플을 만들때 사용하는 ARM-GCC는 같아야 해요. 그래서 Linux OS기반으로하는 어플을 만들어야 합니다. 아마 예비팬더님은 OS가 없는 상태의 어플을 만들고, 컴파일하고(Linux 커널과 다른 버전의 ARM-GCC) 실행을 해서 "Segmenstation fault" 에러가 보인 겁니다. 이 메시지는 Linux kernel 이 출력시킨 메시지거든요. Toolchain이 아닌 ARM-GNU로 컴파일해서 Hello, World 출력을 하시고 싶다면, 포팅된 Linux 가 없어야 하죠. 플래시 메모리에는 Startup.s 파일과 main.c 파일 두개만 있으면 출력이 된다는 얘기죠.

[ARM-GCC startup.s와 main.c 파일 만드는 방법]
301 스타트업(Startup.s) 파일이 뭐죠?
http://recipes.egloos.com/5317479

[ARM Linux base용 app 만드는 방법]
406 Linux에서 라이브러리를 만드는 방법은?
http://recipes.egloos.com/5478301

또 질문 주세여~~!!
좋은 하루 되세요.
Commented by 히언 at 2012/06/20 17:23
증말 미남인지 체크하려고 하시면 곤난해요.

쏱오님 말대로, 현재 linux app을 만들던지, stand alone app을 만들던지 둘중에 하나 해야 되는데요, 임베디드레시피는 standalone app 바닥 부터 접근이 시작된거에요. 그러니까, 그냥 hello world만 찍으시려면 책을 끝까지 한번 보시고, scatter loading, library 등을 다 잘 맞추셔서 만드셔야 해요. ^^. 솥오님이 써 놓으신대로 linux app을 만드는게 처음에는 좋을 듯 해요. 그건 일반적인 linux에서 프로그래밍 하는 것과 똑같거든요.
Commented by 예비팬더 at 2012/06/20 23:19
히언님 말씀대로 시작할때는 리눅스 환경에서 공부하는게 좋을것 같습니다. 우선 컴파일에 필요한 환경이 있어야 할것 같아요.
제가 구상하고 있는 방법으로 처음에는 cygwin을 이용하는 방법을 생각했습니다. 그런데 cygwin은 유닉스에서 사용하는 binary 코드를 사용하는 것이 아니라고 해서 그 방법은 잘못된 것 같아요. 두번째 방법은 Vmware같은 가상머신을 이용해서 사용하는 방법입니다. 그리고 세번째 가장 확실한 방법으로는 멀티부트를 시켜서 사용하는 방법인데요. 윈도우를 쓰는 시간이 많기 때문에 멀티부트는 가급적 피하고 싶습니다. 일단 가상머신을 이용해서 리눅스를 설치해 보겠습니다. 그런데 타겟에서는 kernel 2.6을 사용하고 있는데 호스트에서도 같은 버전의 커널을 설치해야 하는지 모르겠네요.
Toolchain설치하는 방법은 soto님께서 쓰신 임베디드 스케치에 설명해 주셨더군요. 교과서에 있는 내용대로 한번 해 보겠습니다. 혹시 다른 방법이 있다면 알려주세요.

제가 있는 곳은 서울이 아니라서요. 지금 당장 히언님, soto님을 뵐 수가 없네요. 6월 30일에 제 은사이신 교수님께서 정년퇴임식이 있어 서울로 가야 해요. 30일은 토요일인데 금요일 저녁에서 일요일 사이에 시간이 되시면 만나 뵙고 싶습니다.
그리고 한가지 부탁드릴게 있는데요. 히언님 미술솜씨가 좋으세요. 그래서 작품은 아니더라도 작은 액자에 담아둘 만한 스케치한... 뭐 그런거 하나 안되나요?
Commented by 예비팬더 at 2012/06/21 17:37
힘드네요. 잘 안되요. vmware로 fedora core 6를 설치해서 Toolchain을 가져왔어요.
경로설정은 .bashrc에서 /root/opt/usr/arm-generic-linux-gnueabi/bin로 했어요. gcc -v로 실행한 결과 Target: arm-generic-linux-gnueabi로 나와서 제대로 된것 같습니다. 임베디드 스케치에 있는 hello.c 프로그램을 작성하고 gcc hello.c로 실행하니 gcc: error trying to exec 'cc1': execvp: No such file or directory 라는 에러가 나는군요. 프로그램은 /root/armprac에 작성했습니다. 무엇이 잘못되었는지 모르겠네요.
Commented by 예비팬더 at 2012/06/22 09:22
가상머신을 이용한 리눅스 호스트는 그리 좋은 선택은 아닌것 같아요. 데스크탑에 실제 리눅스를 설치해서 해보겠습니다. 호스트에는 페도라 15를 설치해 볼 예정이에요. kernel 2.6 마지막 리눅스 버전이더군요. DIY(Do it yourself), 스스로 직접해보겠습니다. 메뉴얼과 교과서 충실히 보고 배우겠습니다.
그리고 히언님, soto님, 팬과의 만남이라고 생각해 주시고 만나 뵙고 싶습니다. 임베디드에 대해 직접 문의해 보고 싶구요.
Commented by 히언 at 2012/06/23 12:56
아하하~ 넹.
불끈불끈 잘하고 계십니다~~~ ^^

그런데,
6월 말에는 한국에 없습니다. -,.O ~

한국에 잘 있질 않아서 휴우우~ 이해해 주세요~
Commented by 히언 at 2012/06/23 12:57
error는" gcc: error trying to exec 'cc1': execvp: No such file or directory "

https://blackfin.uclinux.org/gf/project/toolchain/forum/?_forum_action=ForumMessageBrowse&thread_id=22086&action=ForumBrowse
이게 도움이 되지 않을까 생각하는데요!
Commented by soto at 2012/06/26 21:04
안녕하세요.
Toolchain에 있는 ARM-GCC 이름이 Makefile에 있는 것과 조금 다른 것 같아요.
그리고 CD에 있는 예제 파일이 있을 겁니다.
참고하시면 될겁니다.
Commented by 귀찮게하네 at 2012/08/16 04:14
예전에 있었던 질문게시판은 이제 볼수가 없나요????
Commented by 히언 at 2012/08/21 23:13
예전에 있었던 질문 계시판이 ㅠㅠ 폭격을 당해서,
닫았어요.

봇들의 공격이 너무 심해서.. 다시 열까요?
Commented by 감사용 at 2012/08/21 13:30
좋은 강의 항상 잘 보고 갑니다~^^/
Commented by 히언 at 2012/08/21 23:13
정말 감사합니~다~ 언제라도 놀러오세요~~
Commented by 오아시스 at 2012/10/05 11:25
Embedded Recipe 3장에 기술되어 있는 Global 변수의 생존기간에 대해 여쭤볼께요.

그림에서 int durian과 char sirsak의 생존기간을 밑에 끝까지라고 하신건 프로그램이 끝날때까지 라는 건가요

아니면 밑의 함수가 끝날때까지 라는 건가요?
Commented by 히언 at 2012/10/11 14:28
안녕하세요~ global은 생존 기간이 프로그램 종료할 떄 까지에요~ scatter loading 쪽 살펴보시면 잘 아시게 될꺼에요~~~
Commented by 신용진 at 2012/11/15 13:45
안녕하세요 신용진입니다.
공들여서 쓰신 좋은 내용 잘 보고 있습니다.

전 현재 삼성전자 S. LSI ASIC 설계팀에 근무를 하고 있습니다.
신입사원 교육자료를 만들다가 운영자님 블로그가 생각이 나서 메일을 띄우게 되었습니다.

교육 자료 만드는 것과 관련해서 운영자님과 논의를 좀 하고 싶은데...
메일 주소를 알수가 없어 게시판에 글을 남깁니다.

운영자님 메일주소를 좀 알수 있를까요? 제가 메일을 다시 드리겠습니다.
참고로 제 메일은 brian33.shin@samsung.com 입니다. 이쪽으로 메일주셔도 됩니다.
Commented by 혜성같은 펭귄알 at 2012/11/16 09:56
안녕하세요 히언님.

블로그 내용 인용과 관련해서 문의 좀 드리고 싶습니다.

어제는 회원가입을 안한 상태에서 비공개 덧글을 남겼는데...
답을 주셨는지 확인해 보려고 했는데 볼수가 없네요.
제가 방법을 몰라서 그런건지.

회원가입을 하고 다시 덧글 남깁니다.

현재 삼성전자 S. LSI 에 근무하고 있습니다.
부서내 신입 사원 교육 자료를 만드는데 히언님의 블로그 내용을 사용하고 싶습니다.
비영리 목적 사용은 괜찮다고 말씀하셨는데,
일부 내용에 대해 인용을 하고 프린트를 해서 나누어 주려고 합니다.

하드웨어 꼴라주 & 마이크로 프로세서 chapter에서 2~3개 section을 인용하려고 합니다.
사용을 해되 될런지요? 아니면 좀더 자세한 내용에 대해 다시 말씀을 드려야 할까요?

이런 일이 처음이라 좀 조심스럽기도 하고,
열심히 만드신 자료인데 양해를 구해야 하는게 도리인듯 해서 문의 말씀 드립니다.
Commented by 히언 at 2012/11/17 00:43
넵! 안녕하세요! 히언입니다~

비영리 목적으로 출처가 명기된 경우라면 얼마든지 사용하셔도 괜찮습니다~~

그렇게 좋은 내용도 아닌데 예쁘게 봐 주셔서 정말 감사합니다~~

언제든 연락주세요~~ 히언
Commented by 혜성같은 펭귄알 at 2012/11/17 09:40
안녕하세요 히언님

허락해 주셔서 감사합니다. ^^

히언님 블로그 보면서 진심으로 많이 배워가고 있습니다.
"그렇게 좋은 내용도 아닌데~~" 라고 말씀 하시는건 너무 겸손이세요.

저는 "Embedded Recipe"를 학교 연구실에서 책으로 봤는데...
부서에 오니 많은 분들이 이미 블로그를 알고 계시더라구요.
그래서 교육 자료를 만들면서 저희 부서와 관련된 내용을 참고 좀 하면 좋겠다는 생각을 하게 되었습니다.

다시 한번 사용을 허락해 주셔서 감사드리고...
출처 확실히 밝히고 사용 하겠습니다.

감사합니다. ^^
Commented by 히언 at 2012/11/17 13:42
별말씀을요!

임베디드 강국이 될 수 있도록
앞으로 나가요~!!!
Commented by at 2012/11/23 10:42
안녕하세요.
ᅟMemory 종류와 Start.S 의 관계에 대해 질문이 있습니다.
NOR flash의 경우에는 Start.S를 Flash에서 바로 실행할 수 있기 때문에,
NOR Flash 내에 부트로더 없이 Start.S와 실행하고자하는 main(? C code의 바이너리)만 있으면
실행이 가능한 것으로 이해하였습니다.
그런데, NAND Flash의 경우에는 Flash에서 바로 실행할 수 없으니,
부트로더가 반드시 필요하다고 하셨는데요, 이 말 자체는 이해가 갈 듯합니다.
NAND에 있는 Start.S와 main모두 실행이 불가능하니, 부트로더가
Start.S와 main를 실행가능한 RAM으로 로드하여 실행한다는 뜻 같습니다.)
그런데, 그럼 부트로더는 어디에서 실행이 되는 것인가요?
짥은 생각으로는 부트로더 역시 NAND에 있다면 실행이 불가능할 것 같은데,
그렇다면 NAND Flash가 주 데이터 저장용으로 설계된 시스템에서는
부팅을 위해(부트로더를 위해) 별도의 실행가능한 Memory를 가지고 있어야하나요?
지식이 얕으니 점점 헷갈리기만 합니다.
Commented by soto at 2012/11/24 03:38
안녕하세요.
저도 이 부분이 처음 공부했을 때 무척 헷갈렸어요. ㅋㅋ
우선 NAND는 블럭 단위로 나누어져 있는데.
무조건 첫번째 블럭엔 부트로더가 들어 있답니다.

타겟보드에 Power On이 되자마자 바로 Flash type이 NOR인지 NAND인지 확인을 한답니다.
보통 Target Board에 선택하도록 되어 있어요.
만약 NAND라면, NAND 첫번째 블럭에 있는 부트로더를 CPU 내에 있는 Internal RAM으로 복사를 합니다. (이건 CPU를 만들때 자동으로 복사하도록 설계되어 있답니다. 즉, CPU가 알아서 합니다.) 좀 더 생각해 보면 부트로더의 size는 Internal RAM보다 크면 안된다는 얘기죠.
Internal RAM에 부트로더가 올라가면, 이 부트로더는 NAND 두 번째 블럭 이후에 들어 있는 프로그램을 SDRAM으로 모두 복사를 한답니다. 마지막으로 Internal RAM에 있는 부트로더는 SDRAM의 시작 주소로 jump를 하죠. 그 이후로는 NOR Flash와 같죠. ㅋㅋ

참고하세요.
204 낸드 플래시가 뭐죠?
http://recipes.egloos.com/5280965

도움이 되셨나요?
즐거운 주말 되세요.

Commented by at 2012/11/26 10:42
답변 감사합니다 ㅎㅎ 흐릿하던 것이 명확해졌습니다.
덕분에 즐거운 주말 보냈습니다! soto님도 즐거운 한 주 보내세요.
Commented by 질문질문 at 2012/11/24 10:27
어릴 때 부엉이 눈 깜박거리는 회로 만들던거 생각하면서 별 생각없이 레시피와 스케치를 구매해서 보고 있는데 적잖케 당황하고 있습니다 ^^;;; 예전에 OS보면서 레지스터나 프로그램쪽은 그마나 이해가 가고있는 편인데 책에서도 나왔듯이 리얼월드가 저한텐 그리 녹록치 않나 봅니다;;
언어 배울때도 컴파일하면서 아웃풋 보고 삽질하듯이 이제 보드하나 가지고 뭔가 해보고 싶은데 크게 2가지 문제에 봉착했습니다.
제가 처음 임베디드를 생각할때는 가벼운 것 하나 만들 때는 만원정도의 투자면 충분하겠지라고 생각했는데 그 때 생각으로는 시중에 그냥 시간만 표시하는 조그만 어린이용 전자시계가 5000원 정도 했던걸로 기억해서 만원이면 이정도 급은 그냥 만들 수 있겠네 했는데 코어를 사고 모듈을 덧붙이는 방식이다 보니 필요없는 부분들이 많이 포함되어 가격상승이 절로 일어나고 있었습니다.

두번째는 친구에게 소리를 값으로 받아 코드로 가공하고 그에 따라 모터가 변화하는 값에 움직이는 간단한 장치를 만들어 선물하려 했는데 이렇게 되면 코어랑, 모터랑, 마이크 등 해서 값이 훌쩍 뛰는데다 코어는 왠지 주기가 싫은 생각이ㅡㅡ;; 임베디드를 처음 접해서 그냥 소프트웨어처럼 하나 떡하니 만들어다 떡하니 주는 걸로 생각했는데 제가 잘못 생각한건가요? 시중에 제가말한 정도의 기능을 하는 장치는 만원이 채 안되는데;;

1. 레고하는 것처럼 제가 원하는 기능만 척척 붙여서 굉장히 저렴한 가격으로 만들 수는 없나요?

2. 혹시 가능하다면 어떤 보드가 가장 어울릴까요?

3. 개발보드는 다소 비용이 들더라도 괜찮은 걸 집어들고 싶습니다. 추천하실만한 보드가 있으신가요?
Commented by soto at 2012/11/25 06:29
안녕하세요.
저렴한 가격과 만족 수준은 비례 관계랍니다.
저렴한 가격으로 필요한 부품을 사서, 비교적 간단한 기능들을 만들 수는 있겠지만,
문제는 제대로 동작을 한다는 보장이 없다는 겁니다.
저의 경험담입니다. 센서 가지고 몇 가지를 Test해 보려고, 아주 싼 센서를 샀습니다.
열심히 프로그램을 만들어서 마지막 동작 테스트를 했었는데,
제대로 동작하지 않는 겁니다. 결국, 센서를 추가로 몇 개 더 샀습니다.
역시 동작을 하지 않아서 몇 일을 밤새며 원인을 찾았었는데,
나중에서야 센서가 문제임을 알고, 조금 더 돈 주고 좋은 걸 사니 바로 되더라구요.
결론은 가격이 저렴할 수록 성능이나 잔고장과의 관련성이 많다보니, 괜히 쓸대없는 시간을 낭비하는 경우가 많았습니다. 그래서 가격대 성능이 좋은 것을 사고, 프로젝트 진행에 더욱 집중하는 것이 개인적으로 도움되지 않을가 생각됩니다.
그럼 어떤 보드가 좋을까요?
"이 보드가 정말 좋아" 라고 단정지어서 말하긴 힘들것 같구요.
대신 좋은 보드 고르는 방법을 알려 드리죠.

1. 어떤 목적으로 프로젝트를 할 것인지 결정을 한다.
2. 프로젝트에 맞게 하드웨어 스팩을 체크한다.
예를 들면, Flash memory size는 어느 정도 필요한가? CPU는 8 bit or 16 bit? 센서는 몇 개? 모터는 몇개?
3. 몇 bit CPU를 사용할 건지 결정 했다면, 개발자들이 가장 많이 사용하고 있는 CPU를 고른다. 이유는 개발 중 문제가 발생했을 때 물어 볼 사람이 많으면 좋겠죠?
4. 하드웨어 스팩이랑 가장 비슷한 완성된 보드를 찾는다. 자신이 직접 레고처럼 원하는 기능을 추가해도 되겠지만, 추가하는 가운데 서로간의 호환성 때문에 문제가 많이 발생함. 그래서 차라리 이미 검증된 보드와 소스를 가지고 하는 것이 더욱 효과적임.
5. 보드 구매 후 내가 원하는 기능들을 upgrade 해가며 공부를 한다.

이상입니다.
도움이 되셨기를 바라며..
즐거운 주말 되세요.
감사합니다.
Commented by fuhaha at 2012/11/26 18:15
안녕하세요

지나가다 걍 생각나서 질문 드립니다.
혹시 전자 책으로 출판하실 생각 있으신가요?

전자 책으로 나와도 좋을것 같아 물어 봅니다......
Commented by 히언 at 2012/11/26 20:30
안녕하세요~ 히언입니다.

전자책으로 출판!
넹 고려해 보겠습니다~!
Commented by 나그네 at 2012/11/29 11:35
우선 빛나는 지식 공유해주셔서 감사드립니다.
저 같은 경우 처음부터 차근히 보고 있지는 않고 필요할 때마다 조금씩 보는 편입니다.
임베디드 소프트웨어 회사에 꽤 오래 재직중이기는 하나 임베디드 소프트웨어에 대해 별반 아는게
없는 참 애매한 입장이구요. 어찌되었던 질문드리자면...

"Bus Sizer Register와 Memory Controller - 메모리 확장구성과 CS와의 관계" 편에서요,
내용 그대로 발췌하면 아래와 같은 문구가 있습니다.

그러니까,
0~64MB까지는 0x0000000 ~ 0x0FFFFFF
64MB~128MB까지는 0x1000000 ~ 0x1FFFFFF
요렇게 되어 있죠.

제가 이해하는 짧은 공식적인 수준에서
F가 여섯개면 24개 신호선이 필요하고 이는 즉, 16MB 크기 메모리를 나타낼텐데...
(이것도 데이터 width가 8bit란 가정이 있어야 한다는 사실도 이 페이지 거의 초반부에
나오는 글을 보고야 알았어요, 그런식으로 생각 해본적이 없어서요)

따라서 아래와 같이 되어야 제가 그동안 알았던 지식으로는 앞뒤가 맞는거 같은데요.
0~64MB까지는 0x0000_0000 ~ 0x03FF_FFFF
64MB~128MB까지는 0x0400_0000 ~ 0x07FF_FFFF

잘 모르거나 어설프게 알다보니 맞는건지 틀린건지 잘 모르겠네요.
사실 이것을 찾아보게 된데는 SDRAM 데이터시트를 보다가 궁금증이 생겨서였습니다.
정확하게는 보드설계한 회로도를 보다보니 SDRAM 용량이랑 신호선 갯수가 다르다는 것을
알게 되어 찾아보게 된것이지요.
보드에 SDRAM이 두개 장착되는 듯 싶은데.. 각각이 64MB이더라구요.
해서 각각의 SDRAM에 신호선을 봤는데 어드레스가 각각 13개 선밖에 안들어가더라구요.
대신에 각각의 SDRAM에 BA0, BA1이라는 2가닥선이 추가로 들어가구요.

머리가 안돌아가니 어떻게 조합을 해보아도 앞뒤가 안맞는거 같아 찾아보게 되었구요.
혹시 SDRAM 데이터 시트에 나오는 아래와 같은 글 해석을 정확하게 알 수 있을까요?
삼성 arm9 2440a cpu의 메모리 컨트롤러 부분입니다.
대소문자 구분합니다.

bank size bus width base component memory configuration bank address
32MB x16 256Mb (4M x 16 x 4B) x 1 A[24:23]

특히 (4M x 16 x 4B) x 1의 정확한 의미를 알고 싶습니다.
하나의 SDRAM 안에 논리적으로 구분된 4개의 뱅크가 있단 소린지 뭘 어떻게 말을 조합해보려해도
안떨어지네요 ㅠㅠ
검색 실력이 제가 꽝인건지 키워드를 잘못 넣는건지.. 제대로 설명된 글을 못찾겠어요.

어떻게보면 정말이지 기본중의 기본인 내용인데요, 어떻게든 한번 정립만 되면 개인적으로
많은 도움이 될 것 같습니다.
갑갑하지만 주위에 물어볼데가 없어 고민만하다가 마지막으로 여기에 여쭈어봅니다.
Commented by 히언 at 2012/12/02 06:47
안녕하세요!

처음부터 시작해 보면,
0x0FFFFFF 는 16M개의 주소를 나타낼 수 있겠지요.
하지만, 1개의 주소가 4개 바이트, 즉 32bit를 나타낼 수 있다면
16M개의 주소만 나타낼 수 있으면 되겠지요?

그곳부터 시작하시면 될 듯합니다만.

화이팅!
Commented by 질문자 at 2012/12/01 11:26
보드를 구매하려는데 뭐가 너무 많아서 제가 알고있는 개념이 맞는지 확인하고 싶어 질문드려요 ^^

저는 레시피랑 스케치에서 ARM을 주로 배웠으닌까

ARM개발보드를 선택하고 하고싶은 내용에 따라 Cortex-M (ST) 종류의 개발보드를 사고

디버깅을 위해 Cortex-M 용 에뮬레이터를 사고

개발보드 에서 테스트한 프로그램을 아예 따로 제품으로 만들기 위해

Cortex-M (ST)용 STM32F100CBT6B 이런거를 10개 사면

제가 개발한 개발보드와 에뮬을 이용해 내용을 STM32F100CBT6B 여기에 담아서

10개의 제품을 만들어 낼 수 있나요?

+ STM32F100CBT6B 이런 애들은 그냥 칩만 주는 거 같던데 기판에 붙일려면 저 핀 하나씩 납땝해서;;;

붙여야 하나요? 소켓같은것도 안보이고 가끔씩 쓰기 좋게 네모난 판떼기에 저거 하나 붙여서

핀을 판떼기 모서리에 빼서 나온 제품도 있긴 하던데 보통 어떤식으로 사용하나요?


만약 위에 내용이 틀렸다면

똑같은 기능을 하는 제품 10개를 만들려면 어떤식으로 구성을 해서 구매해야 하나요?

즉 같은 데이터를 10개의 공시디에 구우면 같은 일을 하는 CD 10장이 생기는데

칩도 똑같이 메인 칩 10개를 똑같이 프로그래밍 해서 같은 기능을 하는 제품 10개를 만들고 싶습니다.
Commented by soto at 2012/12/02 02:43
안녕하세요.
질문이 좀 헷갈리기도 하고 ...ㅋㅋ
답변이 될련지는 모르겠지만, 일반적으로 하나의 새로운 제품이 양산(생산) 되어지기까지의 과정을 말씀 드릴께요.

1. 어떤 제품을 만들것인가를 결정한다.
2. 제품 목적에 맞는 그리고 최대한 적합하다고 판단되는 Reference Board or 개발 보드를 구매한다.
3. 개발 보드를 가지고 Software를 개발한다.어느 정도 Quality 가 되면 다음으로...
4. Reference Board 구매시 제공된 Board의 회로도 기반으로 양산할 제품의 회로도를 그린다.
5. 양산할 제품의 회도로를 양산해 줄 업체에다 넘긴다. 또는 직접 제작을 한다. (제작 방법 따로 설명 드릴게요)
6. 양산될 제품이 만들어지면, Reference Board에서 개발한 Software를 Fusing or 포팅한다.
7. 디버깅 과정을 거쳐서 모든 에러들를 clear한다. 대량 생산을 위해서는 전문적으로 양산을 해 주는 업체에다 넘긴다. 소량이면 직접...ㅋㅋ

직접 제작을 원하신다면, 회도로를 보고 직접 만드는거죠.
언급하신것 처럼, 네모난 판떼기에 저거 하나씩 붙이는거죠. 자신이 없다면, 주변의 땜을 잘 하시는 분에게 부탁하세요.

보다 자세한 내용은 스케치 책 6장 "Digital Photo project" 살펴 보시면 됩니다.

도움이 되셨는지 모르겠네요.
그럼 열공하시고, 즐거운 주말 되세요.

출처:Community Primitive
Commented by 김정민 at 2012/12/03 22:19
안녕하세요. 게시글들 많은 도움이 됐습니다.
그 중 궁금한 것이 있어서 글 남기게 됐어요~
SPI, CCI 와 AMBA에 대해 공부 중인데 현재 게시판엔 아직 SPI, CCI에 관한 글은 없는것 같군요
이 SPI & CCI 통신과 AMBA 가 어떤 다른 개념인지 잘 모르겠습니다.
둘이 동등하지만 다른 개념인건지, 어디에 속하게 되는건지, 아니면 전혀 다른 것인지, 이어지는 것인지,
질문을 어떻게 해야할지조차 애매하군요.
이 둘에 대해서 간단히 어떻게 다른 것이다라고 설명해주시면 정말 큰 도움이 될 것 같습니다.
감사합니다.
Commented by soto at 2012/12/04 09:49
안녕하세요.
열공하시네요.
그 열공이 열정으로 되길 바라며~~!!
근데, 질문이 좀 애매한거 아시죠? ㅋㅋ
일반적인 답변을 원하신다면 웹 검색을 통해서 얻을 수 있을 것 같구요,
좀 더 자세한 내용을 원하신다면, 조금 더 질문을 정리해서 주시면, 서로 도움이 될 것 같네요.
Win-Win 하자구여~~!! ㅋㅋ

그럼 즐거운 하루 되세요.
Commented by 김정민 at 2012/12/04 09:55
음, 각각에 대해서 설명한 내용은 많은데 그걸 봐도 어떤 차이가 있는 개념인지 쉽게 머리로 들어오지 않더라구요.

질문은, SPI,CCI 통신과 AMBA의 쓰임세가 어떻게 다른가 하는 점입니다.

Commented by 히언 at 2012/12/11 17:27
안녕하세요~ 히언입니다~

아.. 질문이.. ㅠㅠ ...

질문이 어떠냐면....

고기를 굽는데,

화로로 구울거냐, 가스레인지에 구울거냐, 부루스타로 구울거냐.. 라는 의견이 많이 나왔는데.
가스레인지랑 부루스타랑, 화로의 차이가 머리에 안들어옵니다.

랑 비슷한 질문입니다.. ㅠㅠ.

목적은 통신인데, 어떻게 통신할꺼냐의 차이에 따라 다르게 부른다고 보시는 것이
좋을 것 같습니다. ^^

더 좋은 답변해야 되는데,
워낙 방대한 질문이라! 이렇게 답변하는 히언을 용서하시옵소서.
Commented by 나그네 at 2012/12/06 20:11
질문드려요. 정리가 안되니 머리속이 너무 하얗네요.
가장 기본이자 시작이라 할 수 있는 정의부터 여쭈어보려해요.
책에 보면 다음과 같은 그림을 많이 볼 수 있습니다.

------------ (g)
stack
------------ (f)
heap
------------ (e)
ZI
------------ (d)
RW data
------------ (c)
RO data
------------ (b)
code (text)
------------ (a)

crt0.s 코드 내용 중 다음과 같은 것이 있습니다.

(1) IMPORT|Image$$RO$$Limit|; end of rom code (= start of rom data)
(2) IMPORT|Image$$RW$$Base|; base of ram to initialize
(3) IMPORT|Image$$ZI$$Base|; base and limit of area
(4) IMPORT|Image$$ZI$$Limit|; to zero initializse

IMPORT Main; the main entry of mon program

질문 1. 짝이 맞나요?
(1) -> (a)인지 (b)인지 모르겠어요.
(2) -> (c)
(3) -> (d)
(4) -> (e)

질문 2. RW나 ZI는 위 그림과 crt0.s 코드상에서 구분하는데
크게 어려움이 없는 거 같은데요.
저기 주석이 맞는건가요? 특히 RO의 Limit 주석에서 말하는 rom code와
rom data라는게 위 그림에서 정확하게 어디를 의미하는지 헷깔리네요.
Commented by 히언 at 2012/12/07 05:05
안녕하세요, 히언입니다~

책에 보시면 RO,RW, ZI 의 정의를 잘 음미해 보시면, 금방 이해 가능하시라고 생각합니다.

아래쪽이 더 작은 주소라고 하면
(1) -> (b)
(2) -> (c)
(3) -> (d)
(4) -> (g) 입니다.
ZI = ZI + stack + heap 입니다.
여기에서 stack과 heap은 ZI이며 굳이 구분한 이유는
crt0.s에서 ZI 영역중에서 stack과 heap영역을 고정해서 사용하기 때문입니다.

ROM = RO (Read Only)라고 보시면 됩니다.
그러니까 rom code = code (text)
rom data = RO data라고 보시면 됩니다. ^^

좋은 답변이길 기대하며.
한밤중에 히언.
Commented by 의지있는 얼음의신 at 2012/12/11 10:00

안녕하세요.

stack 을 통한 backtrace 에 관한 히언님의 아래 블로그를 보고 몇일동안 궁금점을 해결할 길이 없어
질문 드립니다.
http://recipes.egloos.com/5062528

"b_fucnt()함수를 부른 넘은 0x1E6C1A1D 근방입니다. 정확히 말해 b_funct()함수를 처리하고 돌아가서 계속 진행할 주소는 0x1E6C1A1D이니까 여기보다
한 line위가 되겠네요. 한가지 주의할 점은 이것이 Thumb mode이니까 0x1E6C1A1D-1 = 0x1E6C1A1C로 돌아가야 한다고 해석할 줄 알아야 한다는 점이에요! "

Thumb mode 는 16 bit 로 처리하는 것이고 address 는 2 의 배수로 되는 것으로 생각하고 있었습니다.
LR 이 0x1E6C1A1D 이면 LR 이 가리키는 곳의 한 라인 위를 찾기 위해서는 "2" 를 빼야 하는 것이 아닌지요?

추운데 건강 조심하세요.
Commented by 히언 at 2012/12/11 15:36
안녕하세요! 의지있는 얼음의 신님.

thumb mode는 16bit로 처리하지만 마지막 bit를 홀수로 처리해서 thumb mode임을 나타냅니다. ARM mode는 짝수고요.

그러니까 1만 빼면 됩니다. 히히.
Commented by 지나가는길에... at 2012/12/11 14:08
두가지 문의 드립니다.

첫번째입니다.
http://recipes.egloos.com/5108114
("Bus Sizer Register와 Memory Controller - 메모리 확장구성과 CS와의 관계") 내용 중
위에서 대충 음... 그림 빼고요, 12줄 즈음에 다음 문구가 나와요.
"여하튼 이렇게 구성된 System은 한번에 16bit Data를 Access 할 수 있고요"
아무리 봐도 어떻게해서 구성된 시스템이 한번에 16비트 데이터 액세스가 가능한지
잘 모르겠어요.

두번째로는요,
arm9tdmi, arm9e, arm11을 비교분석하는 외부자료를 보다보니
arm11 프로세서 부분에 "64비트 메모리 인터페이스 사용" 이란 부분이 있습니다.

기존 arm9 대비 좋아진 점이라고 해야할지 그냥 특징이 그런건지 모르겠는데요.
64바이트가 아니고 64비트입니다.
되겠네요.

메모리 인터페이스란게 정확하게 어떤건지를 몰라 그런지는 모르겠지만...
이게 기존 대비 장점이 되는것인지 그냥 그렇다는건지도 잘 모르겠어요.

메모리 인터페이스가 64비트란 것의 의미와 이전의 arm9 시리즈 대비
무엇이 좋아진 것인지 알고 싶습니다.
그리고 메모리 인터페이스가 64비트라면 cpu와의 연결선 중 데이터선이 64가닥인지,
어드레스선이 64가닥이란 건지 궁금합니다.
Commented by 히언 at 2012/12/11 16:14
안녕하세요. 지나가다님.

첫번째는 8bit data를 두번에 걸쳐서 가져오면 16bit 가져올 수 있다는 말이고요
두번째는.... 큰 데이터를 한번에 가져올 수 있으면
퍼포먼스가 좋아진다는 뜻이고요.. ^^..

음음음~~~
Commented by ruring at 2012/12/11 15:29
'-'ㅋ
책 또구매했어요 ㅋ_ㅋ
Commented by 히언 at 2012/12/11 15:37
호힛! 루링 오랜만이에요!!!
Commented by 지나가는길에... at 2012/12/11 19:38
절대 디스 아니예요 ㅠㅠ
정말 확실히 몰라서 여쭈어보는 거랍니다.

http://recipes.egloos.com/5107063 (Memory Device를 Control 한다는 것) 내용 중에 다음이 있어요.

다시 이 RAM의 동작을 정리하면, 16bit Data로, 2^24개 만큼의 크기를 갖는다고도 볼 수 있겠네요.
2^25개 만큼의 크기는 16진수로는 0x800000 만큼의 크기이고요, (16MB). 한 주소가 2byte씩 이니까, 최종 16MB까지 저장 가능한 메모리라고 보면 되겠습니다요.

16비트 데이터로 2^24개 만큼 크기이면 16M개 주소 각각이 2바이트이므로 크기가 32MByte 아닌가요?
정말 큰일이에요, 이런거만 나오면 전부다 제 생각이랑 틀려요..
어떻게 계산이 되는건지 이해가 안가요 ㅠㅠ
Commented by 히언 at 2012/12/12 03:20
안녕하세요, 히언입니다.

디스라뇨. 그렇게 느끼지 않았는데... 히히.

그 부분이 좀 이상하게 느껴지긴 하는군요. 지금 보니.

여튼, Address Space라는 건 무조건 1주소당 1byte를 index한다고 생각하시면 됩니다.
그러니까 24개의 Address line이 있다는 건 2^24개의 Address를 index하는거구요
그러니까 16MB 입니다.
그런데, Memory Controller를 이용해서 Data line이 8bit 이상인 경우
하위 필요없는 bit를 빼먹고 구성할 수 있는 거지요.
(위의 글에서는 그렇게 Memory Controller를 이용한 경우는 아니니까)

만일 data line이 16bit인 경우에는 마지막 1bit를 빼고 23개만 가지고도
모든 address를 표현할 수 있겠지요? 마지막 1bit는 신호를 발생하더라도 무시하면 되니까 그렇다고 보시면 됩니다.

2^25라고 표현한 건
아무리 봐도 내용이 조금 누락되었네요.
메모리 컨트롤러를 이용해서 Address 자체를 마지막 1bit를 발생시키지 않는다면
가장 높은 자리의 1bit가 남으니까 그걸 다른 chip의 CS로 사용한다면
32MB로 사용할 수도 있다는 의미입니다.

너무 축약된 형태라 헷갈릴 수 있겠네요.

그럼, 이번에 확실하게 하고 넘어가시는 방향으로!
화이팅.
Commented by ruring at 2012/12/14 12:35
킁!
전엔 책만사고 걍가느냐고 인사도 못남겼네요 ㅋㅋㅋㅋㅋㅋㅋㅋ
잘지내시죠 ㅋ_ㅋ
Commented by 히언 at 2012/12/15 00:37
그르니까요!
어떻게 지내고 있는거에요!?
Commented by ruring at 2012/12/17 11:33
흐음 로그인안하고 비공개로 쓰니까 제글인데 제가 안보이네요 ㅋ_ㅋ
카톡ID = ruring
Commented by 이다솜 at 2012/12/27 17:43
안녕하세요 임베디드에 대해서 공부하려고 하는 학생입니다 !
제가 임베디드소프트웨어쪽으로 진로를 택하려고하는데..
아직 임베디드의 임 자도 모르고 출발하는 상태라 막막합니다.. 옆에서 도와줄 사람들도 없고....
제가 아는건 c언어의 생기초중에 기초만 알고있는 상태라서..
우연히 찾다가 여기 사이트를 알게되었는데요 여기서 공부해도 괜찮을까요..?
괜찮다면 어디부터 시작을해야 될까요..ㅠㅠㅠ 도움좀 주셨으면 감사하겠습니다 !
Commented by 히언 at 2012/12/27 19:19
안녕하세요~ 이다솜님~ 히언입니다~

임베디드 월드에 오신걸 환영합니다.
일단 임베디드개발자되기강좌를 처음부터 끝까지
알던 모르던 읽어보심을 권합니다 (감히)

읽어보시면
용어들에 익숙해지실 것이고
그 다음부터
의문 나는 것들을 하나하나 공부시작하심이 어떤지 아룁니다. 캬홋
Commented by viva at 2013/04/11 14:07
http://recipes.egloos.com/4974281 에서 포스팅한 Timing spec 읽기에서 메모리 읽기 사이클, 쓰기 사이클에 대해서 좀 자세히 다뤄주실수있나요?ㅠㅠ 다른 타이밍도를 보고있는데, address(또는 data)의 setup time, hold time 같은 것이 무엇인지 도저히 이해가 가질 않네요... 혹시 여기에 설명해주실 수 있으면 감사하겠습니다ㅠ
Commented by 히언 at 2013/04/12 01:00
wait state라면 http://recipes.egloos.com/5133398 이런게 도움이 될려나요?
Commented by viva at 2013/04/16 00:30
답변 감사합니다..! 좀 늦게 읽어보았는데, 말씀해주신 포스팅에 있는 Memory Spec 타이밍도에 대해서 좀더 자세히 알고싶네요... tASO라던가 다른 시간에 대해서도 자세히 알고싶습니다ㅠㅠ
그리고 메모리에서 값을 읽을때나 쓸때 Address bus와 Chip select, 그리고 RD/라인에 동시에 신호를 흘려줄수는 없는건가요?? 항상 Address bus를 먼저 흘린후 조금 뒤에 흘리는거 같던데 왜그런지 알고싶습니다...
Commented by 히언 at 2013/04/19 12:57
이제서야. 흐음!

다른 timing 같은 경우는 그다지 신경 안쓰셔도 될 것 같긴 한데요 ^^ . 가장 중요한 wait state정도만 확실하게 아셔도 괜찮을 것 같긴한데. 무리스럽나요. ^^ 그리고 항상 Address bus에 신호를 흘리는건 memory도 flip flop같은 거거든요. 게다가 state machine 비스끄르미한거죠. 동시에 흘려줘도 물론 되겠지만, 어차피 물리적으로 기다려야 하고요, 그렇게 흘려줘야 한다기 보담은, CPU가 그렇게 하질 못해요 ^^. 죄송한데, 한개 post만 읽으셔서 전체적인 그림이 안그려지시는거 같애요. 강좌를 다 읽어보시면 조금은 해소되지 않을까요?
Commented by maxy at 2013/04/17 14:43
안녕하세요. 작년에 레시피 잘 봤습니다. 개발중 모르는게 너무 많아서 질문 좀 올립니다. S3C2440 보드에 1M 카메라, 4.3"LCD를 장착하여 지그비 무선전송하는 시스템입니다.
카메라 프리뷰를 LCD에서 보고 캡쳐하여 이미지간 차이점을 분석하여 그 데이타를 지그비로 전송하는 장비인데 현재 SDRAM이 64MB, NAND가 64MB로 돼있습니다. 그리고 SD 슬롯이 있구요.
근데 SDRAM 용량이 적을수 있다고 하는데 어떤식으로 계산하여 결정을 해야할지 모르겠네요.
Commented by 히언 at 2013/04/19 13:01
^^ 반갑습니다~ SDRAM 용량을 계산 하는 방법이라면, 보드의 문제가 아니라, 어떻게 구현하실거냐에 따라 틀린데요. 기본적으로 SDRAM Buffer를 많이 사용하시니까 그게 얼마나 사용될지를 계산하시는게 어떨까요. Buffer는 static buffer로 구현될꺼냐 (buffer를 많이 사용하면 모자르겠죠), 그때그때 필요하게 dynamic buffer로 구현할꺼냐에 (SDRAM은 모자르지 않겠지만 성능 문제가 있을 수 있겠죠) 따라 다르고요. 그거는 바닥부터 구현을 할꺼냐, 임베디드 OS를 사용할꺼냐에 따라서도 달라지겠죠. 일단, 강좌에서 보셔서 아시겠지만, SDRAM에는 RO, RW, ZI가 다 올라가니까 총 사용하는 메모리의 양에 관련있다고 생각하시면 될거 같애요. 화이팅 입니다!!!
Commented by 생초봉 at 2013/05/13 20:04
책구매후 처음부분을 정독하고 있지만 많이 이해가 가지 않네요;;;으허
"RLC와 Transistor 感 "
L은 교류전파 차단 C는 직류전파 차단으로 알고 있습니다.
L과C가 연결되어 있는데
그러면 어떻게 직류,교류둘다 차단된거 아닌가요?
어떻게 안정적인 DC성분이 나오는지 궁금합니다.

초보라 너그러히 이해해주시기 바랍니다.^^:
Commented by 박정욱 at 2013/05/27 14:15
안녕하세요

언제나 감사하면서 보고 있습니다.^^;

다름이 아니라

강의실 맵 -> 하드웨어 꼴라쥬 -> 일반적인 CPU 동작 예 (코어) 와 파이프 라인

Store 하는 그림에서 SRORE -> STORE 로 바뀌어야 하지 않을까 해서 적습니다.ㅜ

이런거나 지적질해서 죄송해요..

많이 배워서 내용에도 도움이 되었으면 하네요 ;

수고하세요
Commented by 히언 at 2013/05/28 19:47
네네넵 으흐흐. 알겠습니다!!! ~~~ ^^
Commented by 파이어 at 2013/05/30 12:50
보안 쪽에 종사하고 있는 연구원입니다. 보안 공부를 시작한 지 얼마 안되서 폭풍 공부 중인데, 여기 제가 정말 궁금해하던 내용들이 많네요ㅠㅠ 소프트웨어대꾸빠쮸 보는 중인데 써놓으신 글 하나하나가 다 주옥같네요. 보안을 하다보니 컴퓨터라는 것을 이해하는데 몰두하게 되는데 그러다 보면 왜? 라는 물음이 나오게 되는데 항상 그 근원까지 내려가봐야 그제야 이해가 되더라구요. 컴퓨터가 어떻게 생겨먹었길래 그런건지 대체.. 학부 때 컴과 나와서 수업도 많이 들었지만 단순한 '지식의 전달'이 되는 경우가 많았던 것 같습니다..
여튼 좋은 글 많이 써주셔서 정말 감사하단 말씀드리고 싶습니다!! :)
Commented by 히언 at 2013/06/01 20:05
ㅠㅠ 정말 이런 응원의 글은 언제 들어도 행복해요!! 감사합니다!!
Commented by Param at 2013/06/04 13:34
딱! 반했습니다!!!!!!!

정말 이렇게 잘 정리 하시는 분이 있구나....

땜쟁이로 밥벌어 먹고 있지만.....

이런 글을 이렇게 .....

게으르고 부족한 저 ....글을 보고 자신에게 채찍질해봅니다!!!

자주 놀러 와서 놀다가 가겠습니다~
Commented by 히언 at 2013/06/05 23:28
안녕하세요!! 감사합니다~ 자주 놀러오세용~ ^^
Commented by Gonee at 2013/06/11 12:51
맨날 눈팅만하다 남겨요~
모르는것 있을때마다 정말 재밌게 읽고 갑니다.
Commented by 히언 at 2013/06/11 21:53
눈팅 감사합니다!

인사도 자주 부탁드려요 ~(-.-)~
Commented by 김두진 at 2013/06/12 14:40
핸폰 개발쪽에 일하고 있는데요.
빌드환경 잡고나서 컴파일 도중에 아래와 같은 에러메시지가 나와서 문의드립니다.
win XP에서는 이런 문제점이 없었던거 같은데 Win7에 빌드환경을 구축하고 보니 해당파일에 읽기/쓰기 권한에 문제가 발생하는거 같은데요. min파일이나 mak파일에서 파일 생성권한을 변경하는 방법이 있을까요?
어떻게 처리를 해야 할지 아시는분 간단하게나만 설명부탁드립니다.
Fatal error: L6031U: Could not open scatter description file ../../ms/q6695_U.scl: Permission denied
Commented by 히언 at 2013/06/14 17:07
scatter file을 여러가지 변수를 대입해서 parsing해서 만드는 건가요?
아니면 단순히 여는건가요?

만드는 거라면, makefile과 상관없이 사용하시는 폴더가 707 이상으로 주셔야 할 것 같고요.
읽어들이는 거라면 r 만 제대로 주셨으면 상관없을 것 같은데욥. (' ' )?
Commented by 김도형 at 2013/06/20 00:10
안녕하세요. 레시피, 스케치 책 주문 했는데 내용도 마음에 들고 디자인도 이쁘네요.
RF책도 사야겠네욧 ㅋㅋ
스케치 책 앞쪽에 취업 관련 조언 부분이 크게 도움이 되네요.
어딜 가든 꾸준히 열심히 공부하라는 말씀이시죠?
이제 4학년 졸업반인데 책 보고 열심히 공부하겠습니다.
Commented by 히언 at 2013/06/20 15:23
김도형님의 밝은 앞날에, 다시 한번 허레이!!
Commented by soto at 2014/01/08 12:57
도움이 되신다니 기쁘네요. 감사합니다.
새해 복 많이 받으세요. ^^
Commented by 서희주 at 2013/07/19 10:35
히언님 질문이 있어요!
3단 pipeline에서 pc값이 +8이면 ARM10 같이 6단 pipeline(Fetch-Issue-Decode-Execute-Memory-Write)는 +12인가요??
Commented by 히언 at 2013/07/19 17:20
안녕하세요~ 아니요~ 파이프라인이 변해도, PC의 동작은 변함없이 +8을 index하고 있습니다. ^^ 이히힣
http://books.google.co.kr/books?id=vdk4ZGRqMskC&pg=PA31&lpg=PA31&dq=arm10+pipeline+pc&source=bl&ots=UKHjrLhR7K&sig=TxQPqei7E2UW3gNJIIxu5_3nutQ&hl=en&sa=X&ei=R_PoUbDINMX-lAXEv4CABg&ved=0CC4Q6AEwAQ#v=onepage&q=arm10%20pipeline%20pc&f=false
reference 보시면 될것 같고요, 실제 파이프라인은 달라졌지만, 겉으로 보이는 파이프 라인은 3단계라고 보시면 될 것 같습니다~~~ ^^
Commented by 서종현 at 2013/09/05 14:07
임베디드 스케치 3장에서, arm core <-> cache <> sdram
캐시쪽에서 arm 코어로는 워드 단위로 데이터를 받아오고 sdram에서 캐쉬쪽으로는 블록단위로 받아오는데
이게 혹시 암코어는 워드 단위로 데이터 처리를 하고, 램은 블록 단위로 데이터를 처리해서 인가요? 어떻게 되는거져?
TTBR과 TTBA의 차이점이 무엇인가여?
Commented by 히언 at 2013/09/23 10:14
음.. 소토님이 답을 안달아주시네요 ㅠㅠ.

제가 드릴 수 있는 답은~
임베디드 레시피의
http://recipes.egloos.com/5170809
편을 읽어보시면 좀 낫지 않을까 싶습니다 ㅠㅠ
Commented by 서종현 at 2013/09/05 14:09
임베디드 스케치 TTBR과 TTBA의 차이점이 무엇인가여?
또한 ARM core <-> cache <->SDRAM

ARM 코어쪽으르는 워드 단위로 데이터를 받고, SDRAM에서 cache쪽으로는 블록단위로 데이터를 받던데 이유가 무엇인가여?
Commented by ㅁㄴㅇㄹ at 2013/09/22 17:35
쌩초보자(비전공자)가 봐도 읽을 수 있는 책인가요? ㅠㅠ;;
Commented by 히언 at 2013/09/23 10:12
ㅎㅎ 쌩 초보자가 봐도~ 읽을 수 있는 책입니다! 라고.. 주장합니다만 ^^
반갑습니다~
Commented by 궁금이 at 2013/09/30 15:21
안녕하세요? 히언님. 저는 메모리 관련 일을 하는데요.. 메모리 관련하여 모르는 것이 많아 힘들었는데, 공부하기 너무 좋은 곳을 발견한 것 같습니다! 감동이예요ㅠㅠ
그런데 질문이 있습니다ㅠㅠ NAND Flash의 앞쪽 블록에(0번 블록부터 ?블록까지..) 보통 Boot Data가 저장된다고 하잖아요.
그리고 좀 뒷쪽 block에 File system 바이너리가 들어가 있는 상황에서요..
Nand를 사용하는 chipset(contoller)에서 Nand에서 error bit이 존재할 경우 ecc를 통해 error correction을 해주는 것으로 알고 있는데, 혹시 boot data에 error bit이 존재할 경우 보정이 안될 수도 있나요?
부팅 전이니까 그럴 수도 있지 않을까... 생각했는데 그런 경우는 없을까요?
도움 부탁 드립니다~~~~!ㅠㅠ
Commented by 히언 at 2013/09/30 20:56
안녕하세요! 히언입니다~

중요한 것은 ,0번 블록은 모든 vendor가 non-bad를 guarantee 한다는 점입니다.
0번 블록이 bad가 나면 불량인거에요.

그 외의 블록에 error가 있다면 nand 마다 틀려요.
어떤 것은 해주고, 어떤 것은 안해주고.

보통은 안해 주는 게 맞고요,

데이터 영역의 경우에는
소프트웨어 ecc 알고리즘으로 보정해서 사용합니다. ^^.

답변이 되었을라나 모르겠어요!

행복하고, 좋은 임베디드 라이프 되길 바래요!!!
Commented by 궁금이 at 2013/09/30 15:24
위에 비공개 덧글 썼는데 어떻게 보는지를 모르겠어요ㅠㅠ 혹시 답변이 달리면 angeltwo@naver.com 메일로 전송해 주실 수 있을까요?!!ㅠㅠ 부탁드려요~~~~
Commented by 히언 at 2013/09/30 20:56
지송해요 ^^. 이멜은 잘 안쓰는 편이라!
이해 부탁드려요!!!
Commented by 더러운 바다표범 at 2013/10/04 12:36
안녕하세요.

자주 방문해서 이것저것 살펴보고 도움받고 있는 학생입니다.

질문이 한가지 있는데요, Embedded engineer 로서 창업이 가능한가요?

가능하다면 어떤 분야에 가능성이 있는건지 궁금합니다.
Commented by 히언 at 2013/10/04 14:12
ㅎㅎㅎ!!

Embedded Engineer 로서 창업은 분야에 따라 틀리겠죠!!
저는 교육 분야를 추천하고 싶습니다. ^^
Commented by 못되먹은 북극의눈물 at 2013/10/25 16:17
처음으로 글 올립니다. 반갑 습니다. 히언님.
좋은책 덕분에 많은 감동 받고 있습니다.
하얀 책이 까매 졌네요..

제가 at91sam7s256으로 자작 해서 테스트 하고있는데요.
질문 있습니다.
외부에 4MB flash를 달았는데요.

링크드리스트 구조로 데이터를 처리 하고자 합니다.
그런데 인터넷을 찾아 보니까 malloc함수를 이용해서
동적 메모리를 항당 하는데요.
동적 메모리는 heap영역 즉 ram영역이 아닌가요?
전 외부 플레쉬 메모리에 할당 하고 싶은데요.. .
좋은 방법이 없을까요?
Commented by 히언 at 2013/10/25 17:59
안녕하세요~!!

플래쉬에 동적 메모리할당을 하는 건 아니되는 이야기 입니다. ^^
쉽게 얘기하면 PC로 치면 flash는 하드디스크이고요, ram은 ram입니다. 라고 말하니 이상하네요.
어쨌든, malloc으로는 flash에 할당이 불가능 하고요,
flash를 굳이 쓰고 싶으시면
특정 영역을 잡아서 linked list를 처리할 수 있도록 malloc 비슷한걸 구현하시면되는데
문제는 쓰고 지우는데 block 단위로 해야 되니까 엄청난 영역을 사용하게 될 수도 있겠네요.
아니면 flash에 썼다가 업데이트하거나 지울 때 램에 불러왔다가 다시 쓰는 구조를 만들면 되는데
그것도 너무 비효율적이네요 ㅠㅠ.

flash에 동적할당처럼 뭔가 하시는 건
쫌.. 힘들어요. ㅠㅠ.
Commented by 못되먹은 북극의눈물 at 2013/10/25 18:15
감사 해요 ㅠㅠ
호불호가 있는 답변 너무 감사 합니다. 꾸뻑

그렇다면 pc에서 링크드 리스트 구조는 어떤 방법으로 동작 하는거죠?
그것도 하드에 저장 하는것 아닌가요?
pc를 껏다 켠다고 데이터가 지워지만 안될 텐데...
Commented by 히언 at 2013/10/25 22:00
어떤 링크드리스트를 만드시려고 하시는거에요?
Commented by 못되먹은 북극의눈물 at 2013/10/27 19:00
데이터는 말 그대로 가변이구요
저장은 외장 메모리(flash)에 할꺼구요
외부에서 uart로 입력된 데이터를 들어오는 순서대로 저장 할꺼에요..

searching / add / insert / delete 각각 할꺼에요
sort는 안 할꺼에요

링크드리스트를 할려고 하는 긍국적인 목적은 외부에서 들어오는 데이터를 정해진 메모리에 최대한 많이 저장하고 싶어서 이구요
searching /delete 그런거는 안 되도 되요.. add만 되는 되요..
Commented by 히언 at 2013/10/27 23:12
음.. 또 질문이요.

insert만 할껀데 굳이 링크드 리스트여야 하는 이유가 있나요?
음. 그리고, pc에서 링크드 리스트구조로 하드에 저장하는 건 어떤건가요?
Commented by 못되먹은 북극의눈물 at 2013/10/28 11:47
flash에 저장 해야 되요.. ^^
굳이 링크드리스트를 고집 하는건 아니지만,
데이터 량을 가늠 할수가 없어서 어떻게 메모리를 잡아야 할지 모르겠어요.

말씀 하신대로 블록 단위로 저장 하는거라서 다음 데이터의 시작 점을
알수 있는 방법은 링크드리스트가 제일 좋은 것 같네요..
Commented by 히언 at 2013/10/29 17:10
* 음..

외부에서 uart로 들어오는 데이터라면 size야 말로 variable일껀데 그러면 그걸 원하는 사이즈로 자르거나 padding해서 블록단위로 저장하시려고 하는거라면 flash의 정해진 영역을 잡아서 그냥 그만큼씩 저장하시면 될 것 같은데, flash의 정해진 영역의 맨 처음 block에는 전체적인 영역에 대한 정보를 넣어놓는 header를 만드시고 (예를 들면 현재 몇번째까지 저장되었으니까 insert를 어디에 해야 하는지), 나머지를 들어오는대로 header를 참조해서 저장하게 되는데, block단위로 저장하면 너무 낭비가 심하니까, 써야하는 block을 block 크기만큼 ram으로 읽어서 붙어야 하는 정보를 덧붙이고, 해당 block을 지운후, 다시 그 ram정보를 block에 써 넣는 방법을 사용하시는 게 제일 나을 것 같습니다. ^^.

여기에 badblock 처리까지 하시면,
파일 시스템의 기본을 하시는 거에요. 파일 시스템이 i-node를 이런식으로 header에서 관리하고, map을 관리해서 파일을을 저장하거나 수정하거든요.

이건 흔히들 사용하는 아이디어일 뿐, 더 좋은 아이디어는 북극의 눈물님께서 가지고 계실수도! 화이팅입니다~
Commented by 못되먹은 북극의눈물 at 2013/10/28 13:06
그럼 head에는 마지막 node만을 기억 하고있는 건가요?

그럼 lcd에 앞서 저장된 데이터를 표시 할때는
각가의 node에 pPre /pNext를 만들어서 Searching하면 되나요?
///ㅋㅋ 제가 앞에서 searching은 안되도 된다고 그랬구나.. 실수 입니다. ///

결국엔 링크드리스트 구조를 어레이 구조로 만드는 거네요??
또 질문인가?
Commented by 히언 at 2013/10/28 15:19
insert만 하실꺼니까요!

linked list도 마찬가지죠. "각각의" 데이터 블락에다가 header를 넣고 next prev를 넣으시고 서로 index하게 하시고, 그러면 중간에 insert, delete가 다 가능하겠죠.
insert하거나 delete할 때도 마찬가지로 block단위로 ram으로 읽어서 수정한 후에 block을 지우고 다시 그 해당 block에 데이터를 써 넣으면 되겠지요.

처음답변으로 돌아왔는데,
flash에 이런 걸 구현하시려면 하실 게 한두가지가 아닌데,
어쨌든 지금 드린 아이디어로 구현하시면 class 하나로 처리 가능하지 싶습니다. ^^

꼭 필요하시니까 그렇게 접근 하려 하시는 것 같긴 한데,
하나부터 열까지 만드시려면 손이 많이 가겠어요. 화이팅 !
Commented by 못되먹은 북극의눈물 at 2013/10/28 17:41
화이팅 감사 합니다.
Commented by 히언 at 2013/10/30 20:05
http://www.tau.ac.il/~stoledo/Pubs/flash-survey.pdf
이걸 참조하시면 좀 더 쉽게 구현하실라나요!

화이팅!
Commented by 지나는과객 at 2013/10/28 19:32
ARM 공부하는데 너무나 많은게 체계적으로 잘되어 있네요. 정말정말 감사드립니다.
항상 하시는일 잘되고, 블로그주인님 포함 온가족 항상 건강하시고,
100년 무병 장수하시고, 자녀들도 다 이쁘고 건강하고, 돈도 많이 버시고..또 좋은말이 머더라..^^;;
여튼, 히언님 같으신분이 있으셔서 대한민국이 발전되는것 같습니다.
Commented by 히언 at 2013/10/29 17:09
감사합니다~ 몸둘 바를 모르겠어요 오호호홓홓잏힣
Commented by 진윤장 at 2013/11/16 18:15
안녕하세요! 전자관련 방대한 지식에 많이 배우고, 크게 감탄하고 갑니다~

혹시 실례가 안된다면 계인적으로 트렌지스터에 대해서 질문하고싶은 것이 있는데

답변 가능하시면 jin5@purdue.edu 로 메일 하나만 보내주실 수 있으신가요~?
Commented by 히언 at 2013/11/17 10:52
안녕하세요! 반갑습니다~

개인적으로 답장은 힘들어요~!! ^^
이곳에 써주시면 된답니다~~
Commented by 터프한 북극토끼 at 2013/11/19 17:22
그렇군요 제가 드리고 싶은 질문이 그림이 필요해서 메일을 사용했으면 했는데 그렇다면 댓글로 질문 드리겠습니다~ 다운 스위칭 트렌지스터 질문인데요, npn bjt 트렌지스터 이며 B와 V_control 사이에 저항 R1하나 , C 에 Vcc와 Vout이 있고, E에는 ground가 연결된 구조입니다. 이 스위치에 R과 C를 각각 혹은 둘다 추가하여 스위칭 속도를 개선시킬 수 있는 방법이 뭐가 있을까요? 수고스러우시겠지만 답변 부탁드리겠습니다!
Commented by 히언 at 2013/11/20 10:48
Transistor 자체의 rising/ falling 특성이 있는 관계로 R과 C로만 개선 하기는 어려우니
응답 특성이 좋은 Transistor를 사용하라고 권하고 싶습니다 ㅎㅎ.
다만, http://electronics.stackexchange.com/questions/23349/what-is-wrong-here-a-simple-npn-switch 여기에 힌트가 될만 한 approach가 조금 나와 있네요. 도움이 되길 바랍니다.
화이팅.
Commented by 학생 at 2013/11/23 20:59
안녕하세요. 질문이 있는데 여쭤봐도 될까요?
1. printf.c 파일을 printf.elf 로 컴파일 할때, debug section을 어떻게 붙이나요?
2. printf.elf 파일에서 특정 섹션(ex. debug section)이 있는지는 어떻게 확인하나요? (objdump로 확인하는게 충분한가요?)
3. corrupted_file.elf 파일이 손상되서 ollydbg나 헥스 에디터로 분석하는 수밖에 없을때 (objdump 사용 불가능), debug section이 있는지 확인하는 단서가 될만한게 있나요?
감사합니다.
Commented by 히언 at 2013/11/24 21:51
ELF 형식은
ⓛ ELF format Object File의 진실
을 읽어보시면 감이 오실꺼에요!
Commented by 꾸질꾸질한 펭귄 at 2013/11/25 16:37
3.3v cmos nor 칩을 5v ttl cpu 에 연결하려고 합니다. 책에는 그에대한 내용이 없어서 질문 드립니다.

즉 어드레스라인은 nor 에서 입력으로만 사용하니까 저항을 달아서 전압을 낮추니 해결되었습니다. 그런데 데이터 라인이 문제입니다. Bidirection 이라서요. 어떻게 해결이 가능할까요. 버퍼 ic 말고 좋은 방법이 있을지요?

참 그리고 칩제어에 관한글중에서 정확한 래치 타임이 궁금합니다. 즉 어드레스 래치 시점이 cs 라인이 하강하는 시점이라면 읽기나 쓰기에서의 데이터 래치 시점은 어디인지.. 실제로 구현해 본 결과 어드레스 변경과 cs 하강이 거의 같은 시점일 경우 정확한 주소가 전달되지 않는 문제가 있었습니다.

감사합니다.
Commented by 히언 at 2013/11/25 19:34
안녕하세요! 길게 쓰다가, 혹시 잘 설명해 놓은게 없을까? 하고 찾아보니
양방향에서 다른 전압을 사용하는 소자끼리의 연결을 잘 써놓은 것이 있어 소개합니다.
(더 잘 써 놓으신 게 있는데, 제가 쓰는 건 좀 챙피하네요)
아주 잘 써 놓으셨네요. Voltage Divider를 이용한 것인데, 읽어보시면 감이 확 오시리라 생각합니다.
http://tuwlab.com/index.php?mid=electronics&category=7074&document_srl=1920

그리고 두번째 래치 타임에 관련하여서는, 좀 이상한 접근을 하신 것 같은데.
case by case라고 보셔야 하는데,
이거야 말로 칩 스펙을 잘 보셔야 합니다.
CS 변화로 부터 얼마나 차이가 시간이 지나야 제대로된 데이터가 나오는지에 대해서
데이터북에 "확실하게" 나와 있을 것입니다.
강좌중에 보면 tCE 등으로 타이밍 다이어그램을 설명해 놓은게 있는데 도움이
되실라나 모르겠습니다.

화이팅!
Commented by ㄴㅇㄹㄴㅇㅇㄹ at 2013/11/29 09:41
ㅇㄹㅇㄹㅇㄹ
Commented by 히언 at 2013/11/29 13:30
ㄴ? ㅁㅅㅁㅆㅇㅈ ㅁㄹㄱㅇㅇ!!!
Commented by 순수한 얼음왕자 at 2013/12/04 12:37
그런데 사진이 깨지는건 저만인가요?
그림이 깨져서 못보는게 많아서 아쉽네요...정말 도움이 많이 될것같은데..
Commented by 히언 at 2013/12/04 14:29
네~?

그림이 깨지는 건 없는데요 ㅠㅠ
어떤 그림이 깨지나요?
Commented by 순수한 얼음왕자 at 2013/12/06 17:35
음... 인터넷 검색좀 해보겠습니다. 전 메인화면에 몇몇 링크가 좀 깨져보이네요...
Commented by 흙곰 at 2013/12/11 16:37
혹시 회로해석이나 기본적인 하드웨어 엔지니어로 가는 스터디 모임을 할수있는 곳이 있나요?? 알고 계신분 있으신가요 ??
Commented by A.. at 2013/12/15 03:24
왜 발표하다가 누가 말버릇을 지적해주면 듣는 사람들은 그 말버릇만 계속 찾느라 발표 내용은 전혀 들어오지도 않는다는 말이 있잖아요. 임베디드 리시프는 전문서적과 달리 참 쉽게 쓰여진 책이긴 한데 그런 부분이 보여서 좀 아쉽습니다.. 막 한 절에 "어랏?" 이 몇번 들어갔는지 이런거나 찾게 되요 ㅜㅜㅜㅜㅜ
Commented by 히언 at 2013/12/15 23:35
으히히~ 그랬나요~?
Commented by 메주 at 2013/12/27 07:36
임베디드스케치라는 책을 여기서 구매할 수 있다고 들었는데
따로 신청하는 란이 안보여서요.. 여기서 하는게 맞나요.?
Commented by 히언 at 2013/12/27 11:47
안녕하세요! 임베디드스케치는 소토 님이 저술하신 책으로서 본 블로그의 시즌 3을 장식하고 계십니다. 책은 코너북 http://www.cornerbook.co.kr/shop/goods/goods_list.php 에서 독점 판매중이고, 그곳에서 구입이 가능하십니다~!
Commented by soto at 2014/01/08 13:02
안녕하세요.
히언님이 먼저 답변을 달아 주셨네요. ^^
매주,히언님 감사합니다. ~~!!
Commented by 디논 at 2013/12/31 16:47
https://docs.google.com/document/d/1McADF3KI933ZmNE8R8TYvwBM71d-QtWj-KcqAMVD53E/edit?usp=sharing

위 링크의 레지스터에서 WR= WRITE 신호가 어떡해 다른거지요?
clock 신호가 있는데 왜 WRITE 라고 했는지 이해가 안가요.
Commented by 히언 at 2013/12/31 19:03
clock은? 래치에 대한 write이고, 위에 write는 "latch 모음"에 대한 write이죠!
Commented by algo at 2014/01/06 10:15
안녕하세요.
리셋 익셉션과 메모리 데이터 내용에 대해서 궁금한점이 생겨서 댓글을 남기게 되었습니다.
ARM 보드에서 리셋 레지스터? 값을 변경하여 리셋하는 소프트리셋을 하게되면 리셋 스테이터스 레지스터 값이 이전에 리셋이 하드리셋을 했는지 소프트리셋을 한지 알수 있었습니다. 여기서 궁금한 점은 우리가 보통 리셋을 하게 되면 부트로더에 의해서 rom의 내용(nand, nor 등..)을 ram으로 옮긴 후 시작하게 되는데 소프트리셋을 하면 기존의 램에 올려진 값이 바뀌지 않는 건지 궁금합니다. 아니면 ram에 올려지는 영역이 달라서 리셋 스테이터스를 감지할 수 있는 영역은 바뀌지 않고 확인할 수 있는 건가요?? 사실 제가 이글 쓰면서 제대로 질문하고 있는건지 잘모르겠지만;; 혹시 이에 대해 답변 해주실수 있으면 부탁드리겠습니다..ㅠ
Commented by 히언 at 2014/01/07 10:31
음? 어떤 말씀이신지 애매하긴 한데, 소프트리셋후에 기존의 램 값을 변경하는 것은 하드웨어/ 소프트웨어 구성에 따라 틀리고요, 일단은 소프트리셋 하자마자는 기존의 램값은 변경이 안되는 것이 원칙입니다. 보통은 디버깅을 위해서 문제가 있을 때 일부러 soft reset을 내게 하고, 브레이크를 reset vector에 건 후 무엇 때문에 그런 일이 벌어졌는지 찾아볼 때 유효타입니다. 뒤에 질문은 저도 잘 이해를.. -,.-a 그럼 화이팅!
Commented by 질문 at 2014/01/08 12:46
임베디드 레시피 책이 있는데,

차기작으로 나온 책이 있나요?
Commented by 질문 at 2014/01/08 12:49
임베디드 레시피 3쇄 책이 있는데,

혹시 오타 같은거 수정한 것에 대한 알림 파일이 있는지요.

예를 들어

3page 무슨 단어 -> 무슨 단어로 수정

이런거 말이죠.
Commented by 히언 at 2014/01/08 16:32
안녕하세요~ 히언입니다~

오탈 관련해서는 현재는 제공되는 것이 없고,
제가 틈틈히 작업해서 pdf로 제공할까 합니다. (그런데, 아직은 큰 작업은 안해서..)
이상한 부분 신고해 주시면 정말 감사하겠습니다~ ^^
Commented by ㅁㄴㅇㄹ at 2014/01/24 10:20
안녕하세요.

히언님 블로그를 자주 이용하는 사람입니다.

매번 정말 많은 도움을 얻고 갑니다.

최근에 히언님께서 쓰신 책을 알게되어 구매하려고 하는데 현재 품절상태더라고요.

혹시 추가 발행이나 개정판 발행 계획은 없으신가요?
Commented by 히언 at 2014/01/24 16:14
안녕하세요! 방가워요!

임베디드 레시피는
http://www.cornerbook.co.kr/shop/goods/goods_view.php?goodsno=186785431&category=
에서 판매중이고요,
블로그 메인 화면에서도 링크가 있어요~

새해 복 많이 받으시고
더 많은 도움이 될 수 있도록 노력하겠사와요 유훗
Commented by 신주환 at 2014/01/25 21:46
임베디드 소프트웨어쪽 분야에 대해 알고싶은 컴퓨터공학도입니다! 종이책으로 보는걸 선호하는 편이라
조금 전 '임베디드 레시피'라는 책을 주문을 했는데 여기저기 둘어보니 같은가격의 '임베디드 스케치'라는 책이있더라구요... 목차를 훑어보니 임베디드나 기본적인 용어들에 대한 설명이고 이게 오히려 처음 접하는 저에게 친숙할것 같아서 책을 바꾸려는데 가능할까요?? 그리고 설 주문이 23일까진데 오늘 주문하면 언제쯤 받아볼 수 있을까요?
Commented by 히언 at 2014/01/25 21:52
안녕하세요, 그 그건.. 출판사에서 확인하셔야 할 것 같은데요. ;;;;
Commented by ㅂㅅㅇ at 2014/02/17 17:40
히언님의 블로그 덕분에 많은 도움을 얻는 사람중에 한명입니다.
우연한 기회에 알게되어서 잘 보고 있습니다.
계속해서 블로그에 오는것도 괜찮지만, 제 티스토리에도 자료를 남길까 하는 생각이 들었습니다.
하지만 egloos의 아이디가 없으면 퍼가는것도 어떻게 안되는것 같아서
공부를 하면서 직접 작성을 하려고 생각했습니다.
그렇게 하려면 출처는 어떻게 해야되고, 그렇게 할 수는 있는것인지 알지 못해서 질문하려고 합니다.
여기에 있는 자료들을 보면서 저 스스로의 공부를 위해서 저의 티스토리에 글을 남겨도 되나요?
Commented by 히언 at 2014/02/17 18:02
안녕하세요! 반갑습니다~~!!

티스토리에 공부한 흔적을 남기시는 것은 아주 좋은 것이라 생각합니다.
다만, 공부하시고, 글 마지막에
친절한 임베디드 시스템 개발자되기 강좌로 부터 - http://recipes.egloos.com -
이라고 달아주시면 문제 없을 것 같습니다!

부족한 것을 예뻐해 주셔서 감사합니다 ^^
Commented by 디논 at 2014/03/10 12:07

플립플롭은 입력과 출력이 두 개씩인데 왜 1비트 기억소자인가요? 2비트 기억소자 아닌가요?

그리고 /Q는 사용할때도 없는데 왜 있는거죠?
Commented by 히언 at 2014/03/10 12:23
레지스터 넌 누구냐! 편을 읽어보심이!!!
Commented by 루링 at 2014/03/12 12:29
음? 방명록 테러이후 안왔드니!
Commented by 히언 at 2014/03/12 14:24
오우~ 롱타임 노씨!!!
Commented by 김아무개 at 2014/03/13 18:39
수고가 많으시지요
soto님 께서 집필중인 데 강좌중 LCD 드라이브 만들기 강좌 조만간 올려 주시면 안될 까요

제가 업무상 필요해서 그런데요...
Commented by 히언 at 2014/03/15 10:40
Soto님~
Commented by soto at 2014/04/07 14:47
이 글을 읽고 많이 고민을 해 보긴 했는데...
아직 결론이 안났어요.
조금 더 고민을 해 볼게요.
Commented by 까진 가마우지 at 2014/03/28 23:29
RAM Memory의 물리적 동작 편에서 코멘트로 남기신

ddress Bus Width가 16 bit이면 최대로 나타낼 수 있는 Memory Size는 얼마 인가요? 라는 질문에 당당하게 대답하실 수 있는 부운~? 자자, 별거 아니지요~ 일단은 Address Bus Width가 16 bit이면 2^16 만큼 Address를 표현 할 수 있겠지요? 왜냐하면 1byte당 address를 1을 차지하거든요. 그러니까 2 byte면 0x2만큼의 Address가 필요하고요, 4byte면 0x4만큼의 Address가 필요한 거에요. 자자, 그러면 얼마 인가요? 2^16만큼의 Address를 표현 하는 거지요. 즉, 64KB이죠? 아하하~ 그러면 한번에 16 bit씩 Access하는 (즉, word가 16bit씩인 System) System에서는 얼마나 큰 Address 크기를 나타낼 수 있는 걸까요? 뭐, 간단하죠. 두배 되겠지요? 한번에 2 byte씩 Access하니까 굳이 1 byte씩 표현 할 이유가 없겠지요? 그러니까 64KB를 나타 낼 수 있는 Address line에서 그런 경우라면 128KB 인거죠

위부분에서 "16bit 어드레스로 나타낼수 있는 메모리의 최대사이즈는 64KB라는 것"은 이해했습니다. 문제는 한번에 16bit씩 access하는 시스템에서 나타내는 어드레스의 크기가 이해가 가지 않습니다.
16bit씩 data를 access한다는 것은 어드레스 1개당 2byte를 access한다는 것인가요 ?
그래서 16bit address 버스로 나타낼수 있는 어드레스가 64K개 이므로, 16bit 시스템에서 나타낼 수 있는 메 모리사이즈가 128KB라는 것인가요?
어디서 부터 막혓는지... 아...어렵네요
Commented by 히언 at 2014/03/29 16:53
그렇지요! 간단하게 생각하시면 가장 하위의 bit의 0,1 을 구분할 필요가 없게 되는거겠지요? 항상 0일테니까요! 그러면 16bit 데이터라인으로 17bit를 표현할 수 있겠지요? 그러니까~ 128KB!
Commented by 똥깨 at 2014/04/15 16:21
NXOR 진리표 오류요. 1000 이 아니라 1001 임
Commented by 히언 at 2014/04/16 00:12
넹~ 오류 접수 완료!!!!
Commented by 알빵 at 2014/04/18 23:10
안녕하세요
임베디드 시스템에 관심이 있어 검색을 하다가 이 사이트를 알게 되었네요
도서를 구매하여 임베디드 분야를 배워보려구 합니다.
임베디드 레시피(season1)와 임베디드 스케치(season3) 책중에 어떤책을 먼저보면 좋을까요?
Commented by 히언 at 2014/04/19 11:26
안녕하세요!

블로그에서 천천히 강좌를 살펴보시다가 결정하셔도 늦지 않아요~~~!!!
Commented by soto at 2014/04/21 09:03
새로운 도전을 하시는 군요.
파이팅입니다. ^^;
Commented by 우와 at 2014/04/22 22:47
우연히 검색으로 들어왔는데, 감동했습니다. 이런 블로그를 이제야 찾다니...
Commented by 히언 at 2014/04/23 00:33
감사~ 감사합니다~~ ^^
Commented by at 2014/05/08 17:35
Microprocessor 아뜰리에 (Atelier) - MCU을 파헤쳐 보자

앞에 3개가 링크가 짤린거 같습니다~
Commented by 히언 at 2014/05/22 11:43
헙! 넹!!
Commented by 혜성 at 2014/05/31 09:23
한빛미디어 리눅스 디바이스 드라이버 실습을 진행하는데 한쪽은 USB 한쪽은 프린터 포트로 된 케이블을
사용하는데 제어가 안되고 있습니다.

리눅스 디바이스 드라이버를 실습중 프린터 포트 주소 0x378로 값을 주고 LED를 키고 끄고 하는 것으로 알고있습니다.
그런데 제가 산 프린터 케이블이 한쪽은 USB 한쪽은 25핀 케이블인데 이게 동작을 안하고 있습니다.
혹시 USB 방식의 패러럴 포트는 주소가 다른 것인지 아니면 리눅스에서 안되는 것인지 조언 부탁드립니다...ㅜ
Commented by 태민 at 2014/06/11 13:14
안녕하세요 임베디드공부를 시작하고싶은 대학생입니다.
이왕이면 책을 사서 공부하고 싶은데
책이 2권이 있더라구요
레이피랑 스케치...
두 책의 차이점은 무엇인가요?
시작하는 사람에게 어떤책이 더 유용할까요?
이제 막 시작하는 거라 막막하네요ㅜㅜㅜ
조언 부탁드립니다...ㅜㅜ
Commented by 히언 at 2014/06/11 15:13
안녕하세요~

두 권 모두 블로그에 대부분 연재되어 있으니까! 읽어보시고 결정하심 될 것 같용!!!
Commented by 장현정 at 2014/06/11 21:14
ARM instruction을 검색하다가 찾아 왔습니다.

너무 좋은 자료들이 많이 감탄하며 읽고 있다가.

이런 내용이 책으로 나오면 좋겠다 싶었는데..

책이 있었네요.. 꼭 구매 하겠습니다.

감사합니다..
Commented by 히언 at 2014/06/12 16:21
ㅠㅠ 감동이에요!
Commented by soto at 2014/07/11 13:41
그저 감사할 뿐입니다. ^^
Commented by 최재경 at 2014/06/20 23:33
와... 진짜 알짜 내용이네요.. 전자전기의 개념주어담기 이후 최고입니다..

근데 책에는 이 블로그의 모든 강의가 다 집필되어 있나요??
Commented by 히언 at 2014/06/21 00:11
아이고 감사합니다.

마지막 챕터는 책에서만 만나실 수 있어요 ㅠㅠ
Commented by 꼬꼬마 at 2014/06/26 19:50
현재 임베디드 업종에 있으면서 이 사이트는 저에게 보물같은 존재입니다.
물론 레시피/스케치 둘다 구입했습니다.
앞으로도 좋은 피드백들 부탁드립니다 :)
Commented by 히언 at 2014/06/26 23:35
으랏차차. 감동 받았어요 ㅠㅠ.
Commented by soto at 2014/07/11 13:42
많은 도움이 되셨으면 좋겠어요. ^^
Commented by Tyr A Sin at 2014/07/05 21:59
아직 고딩인 학생입니다...
제가 임베디드 프로그래머에 대해 관심을 갖게 되어서
찾아다니다 이 이글루를 구독하게 됬습니다~
좋은 강좌가 많은 것 같아여~열심히 구독하겠습니다!~!

궁금한 점이 있어서 질문해 봅니다;;(검색에도 잘 안나와서...ㅠㅠ)
임베디드 프로그래머 계통으로 진로를 잡았을 때
필요하거나 도움이 될 만한 관련 학과나 자격에 대해
알려 주실 수 있나요?
링크로 알려주셔도 괜찮습니다!~
Commented by 히언 at 2014/07/05 23:02
안녕하세요.

임베디드로 진로를 정하셨다니. 어린 나이에 대단하십니다.
다만, 제가 드리고 싶은 조언은

1) 학부는 전자, 전기 계열로 진학을 하시고,
2) 대학원을 컴퓨터, 소프트웨어 쪽으로 진학하시는 것을 권합니다.

임베디드라고 이름을 붙인 학과들이 몇개 있긴 하지만,
그다지 권하고 싶진 않습니다. 폭넓은 지식이
임베디드분야에서 돋보일 수 있다고 자신합니다.

그럼! 화이팅입니다!
Commented by 독립적인 공룡 at 2014/07/10 00:08
안녕하세요. 좋은 책을 써주신 덕분에 많이 도움 받고있습니다.

.o 파일과 elf파일에 대해 질문드릴 것이 있습니다.
사용하고 있는 IDE는 Eclipse기반으로 만들어졌습니다.

요번에 예제소스를 하나 받았는데 .c / .h 파일은 없고 .o 파일만 온 부분이 있습니다.
그래서 setting -> library에 추가했는데 "multiple definitions of symbol ~~~"이라는 에러가 발생하네요.

질문은 .o파일만 있어도 라이브러리 추가해서 컴파일이 가능한가요 ?
multiple definition에러가 나왔다는 것은 컴파일은 된다는 의미 같은데... 가능한 방법인가요 ?

multiple definition에러는 예를 들어
spaghetti.o 파일에 HELLO라는 정의가 있다면
multiple definitions of symbol "HELLO" in both "spaghetti.o" and "spaghetti.o"라는 에러로 나옵니다.
그렇다는것은... 이에러는 고칠 수 없는 에러이지 않나요 ...

조언 부탁드립니다..
Commented by 히언 at 2014/07/10 01:04
안녕하세요~

일단, .o는 컴파일 된거니까, link에만 참여하겠지요!
아마도 auto build를 해서 link에러가 난 듯 한데
multiple definition error면 symbol이 두개라서 난거 맞습니다.

예제 소스를 못봐서 확실하진 않지만,
아마도 spaghetti.c와 spaghetti.h이 컴파일 된 상태에서
clean을 하지 않고 예제 소스를 올려놓은 듯 싶습니다.

고로, spaghetti.o는 library에 굳이 넣지 않고 clean후 컴파일 하시면
spaghetti.o를 다시 만들어내고 정상적인 link를 할 거라 생각됩니다~

화이팅!!
Commented by 학생 at 2014/07/20 13:58
컴공 전공하는 학생입니다. 궁금한 내용이 있어 검색하다 블로그 알게되서 많이 도움이 되고있습니다.
아주 기본적인 질문이 하나 있는데요 mmu를 사용하는 경우 mmu에서 나온 물리주소가 실제 ram의 주소와 일치하는 건 아닌건가요? 시스템에 메모리 장치가 여러개 있는경우 mmu에서 나온 물리주소를 메모리 컨트롤러가 다시한번 기기별로 맵핑을 해서 실제 원하는 장비에 접근하는건가요?

예를 들자면 시스템에 A 메모리와 B 메모리가 존재하고 A, B 각각은 0x0000 부터 0x00FF 의 주소를 가지고 있다고 가정하면(256 바이트가 되겠네요), mmu에서 나온 물리주소가 가령 0x0ABC 라면 이게 메모리 컨트롤러가 어떻게 매핑하느냐에 따라 A의 특정주소가 될수도있고 B의 특정주소가 될수도있는 건가요?
Commented by 히언 at 2014/07/20 14:53
넵! 맞습니다! 상당히 스마트 하신데요.
Commented by 학생 at 2014/07/20 18:27
아! 답변감사합니다. 그럼 추가질문이 하나 더 있는데요 그렇다면 메모리컨트롤러는 그런 맵핑을 어떻게 하는건가요?
사용자가 직접 맵핑을 지정해주나요 아니면 생산자가 미리 펌웨어 같은 방법으로 지정해놓는 건가요?
Commented by 학생 at 2014/07/20 18:35
몇가지 더 질문이 생겼는데요(알면 알수록 자꾸 궁금한게 생기네요)
1. ARM의 경우 AMBA 버스의 어드레스 디코더가 이런 역할을 하는건가요?
2. 만약 시스템 사용자가 A메모리 (위의 질문과 무관하게, 예를 들어 메인메모리라 하면)의 0xABCD에 접근 하고 싶으면 해당하는 주소를 (메모리 컨트롤러가 맵핑해서 바꾸기 전의 주소) 어떻게 알 수 있나요?



Commented by 히언 at 2014/07/20 20:31
아.. 아직 강좌를 다 둘러보지 않은 모양이에요!
http://recipes.egloos.com/5232056 MMU 관련 강좌인데
질문하신 내용 모두 들어있솨와요.
Commented by ADS at 2014/07/22 16:14
책보고 공부중입니다. ADS 이용해서 컴파일 해보는 부분을 직접 해보고싶은데 ADS 는 어디서 구할수 있나요? 구글링 아무리 해봐도 못찾겠네요 설치방법들만 나오고 ARM 공식 사이트에는 옛날꺼라 다운로드 링크조차 없네요
Commented by 히언 at 2014/07/23 15:14
아마 RVCT는 현재 다운로드가 가능할텐데, RVCT로 컴파일 해 보셔도 됩니다~!!
Commented by 아는척하는 맘모스 at 2014/07/22 23:20
bus에 직렬로 연결된 저항의 원리가 궁금합니다.
Commented by 아는척하는 맘모스 at 2014/07/22 23:23
아래 방법의 디버깅 강좌는 언제쯤 볼 수 있을까요?
책도 구매했는데 책에는 안나와 있드라고요

언디파인드 익셉션(Undefined Exception) 디버깅은 어떻게 하죠?
데이타 어보트 익셉션(Data Abort Exception) 디버깅은 어떻게 하죠?
리셋 (Reset) 디버깅
램덤하게 발생하는 익셉션(Exception) 디버깅은 어떻게 하죠?
Commented by 히언 at 2014/07/23 15:17
엄. 질문하신 소토님의 시즌 3 목차와 소토님의 임베디드 스케치 책은 차이가 있습니다.

제가 한 시즌 1의 마지막 챕터에 내용이있는데,
그건 책에만 있어서 ㅠㅠ.. 어쩌죠.
Commented by 학생 at 2014/07/23 22:13
책 잘 보고있습니다 - 생각보다 오타가 많네요 :(

질문이 생겼는데요 책 292 페이지에 보면 어셈블리 코드를 c로 바꿔논 부분이 있습니다.

그 부분에서 while문 마지막에 if (manual(sum, data[1])) 부분이 있는데요

어셈블리 코드에서는 LDR r1, [r6, #4] 로 되어있습니다.

이 것은 DCB로 데이터 써준 부분이 4바이트로 정렬되어있다는 뜻인가요?

DCB는 byte 데이터를 저장하는데 4바이트로 정렬되어있다면 3바이트씩은 버리는건가요?
Commented by 히언 at 2014/07/24 00:36
오탈이 많아서 죄송 ㅠㅠ.

ARM 32bit 머신은 32bit 단위로 align을 하게되며,
DCB는 그저 byte type이라는 것을 알려줄 뿐 입니다.

그러니까, data[1]이라면 4byte뒤의 것을 읽어야 하므로 말씀하신대로 이해하시면 됩니다!

data section에 보시면
DCB 이지만
막상 데이터는
0x0000000a 로 4byte를 차지하고 있습니다. ^^
Commented by 아는척하는 맘모스 at 2014/07/24 12:53
bus에 직렬로 연결 되는 저항의 역할과 원리을 알고 싶습니다.
너문 초보적인 질문이지만 아시는 분은 설명 좀 부탁 드립니다.
Commented by 히언 at 2014/07/24 14:46
혹시 풀업, 풀다운 저항을 말씀하시는 건지요?
그거는 임베디드레시피
http://recipes.egloos.com/4971029
강좌에 있습니다.
Commented by 권민철 at 2014/07/27 13:08
안녕하세요 임베디드 레시피 책 보고 공부중인 학생입니다

ubuntu에서 apt-get install tcc로 tcc깔아서 174쪽 assembly공부중인데요

tcc -E 명령어는 먹혔는데 tcc -S명령어는 안먹히네요...

$tcc 로 확인해봤더니 -S 명령어가 업서요 ㅠㅜ 어떻게 해야하나요?
Commented by 히언 at 2014/07/27 16:01
리눅스 tcc는 cross compiler가 아닐텐데요 ㅠㅠ.

ARM을 해 보시려면
arm cross compiler를 쓰셔야 해요.

http://k1rha.tistory.com/entry/ARM-%ED%81%AC%EB%A1%9C%EC%8A%A4-%EC%BB%B4%ED%8C%8C%EC%9D%BC-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0

여기 있는대로 까심 되긴 하는데,
tcc, armcc 하고는 조금 다르게 생긴 assembly output이 나울꺼에요.
머 그래도 매 한가지니까. 잘 보심 차이를 금방 눈치채지 않을까요?
Commented by 조용한 아기백곰 at 2014/07/27 13:17
안녕하세요 임베디드 레시피 책 보고 공부중인 학생입니다

ubuntu에서 apt-get install tcc로 tcc깔아서 174쪽 assembly공부중인데요

tcc -E 명령어는 먹혔는데 tcc -S명령어는 안먹히네요...

$tcc 로 확인해봤더니 -S 명령어가 업서요 ㅠㅜ 어떻게 해야하나요?
Commented by 학생 at 2014/07/28 09:21
우분투에서 받는 tcc 는 "Tiny C Compiler" 구요 책에서 나오는건 arm development suite 라는 프로그램에 있는 thumb c compiler 입니다
Commented by 학생 at 2014/07/28 09:22
질문 있는데요 책에서는 ads 기준으로 어셈블리 명령어등이나 링크과정 같은게 설명되어있는데 gnu 툴체인의 링크 과정이나 어셈블리 syntax 등은 어떤 문서를 봐야 나와있나요??
Commented by 히언 at 2014/07/28 17:25
어떤 문서를 봐야 할지는 모르겠지만,
생성되는 Assembly가 다를 뿐이지
컴파일 과정과 링크 과정은 똑같아요!
Commented by 학생 at 2014/07/29 10:25
6장에 8번 스케줄러 구현 부분을 보고있는데 질문이 생겼습니다.

일단 제가 이해한 바로는 task_a 가 usr 모드에서 실행중이다가 인터럽트가 발생하면 irq 핸들러가 동작할꺼고 여기에서 context switch 하는 루틴으로 점프를합니다. 그러면 svc 모드로 바뀌구요. 여기서 컨텍스트 스위치 작업을 하기위해 sp를 사용하는데 이 sp는 svc 모드의 sp이기 때문에 usr 모드에서 돌고있는 task_a 의 sp의 값과 다르지 않나요??
Commented by 학생 at 2014/07/29 12:52
아 그리고 혹시 보드하나 추천해주실 수 있으신가요?
아주 밑바닥부터 부트로더부터 아주 간단한 os까지 직접 만들어볼수 있는
간단한 보드없을 까요??
Commented by 히언 at 2014/07/29 14:00
? 질문을 다시 한번만 정리해 주세용 ㅎㅎ.

context switching을 하기 위해 sp를 사용한다는 부분을 지가 이해를 잘.. -,.-a

보드는 임베디드가 뭔가 정도 이해하시는데는 아두이노 정도 추천하고요,
진짜 arm으로 os까지 만들어 보실려면
라스베리파이를 권합니다. 왠만한게 다 들어 있으니까요.

Commented by 학생 at 2014/07/29 13:58
음 그러니까 책에보면 context switching 을 할 때,
예를 들어 task_A 를 실행중에 context switching 이 발 생하고 다음에 실행할 태스크가 task_B 라면,
task_A가 실행중일 때의 cpu의 레지스터들을 task_A의 스택에 저장을 한다고 되어있는데
context switching 을 하는 루틴이 usr 모드에서 실행되는게 아니기 때문에
task_A의 sp 를 어떻게 접근할 수 있느냐 이게 질문의 요지입니다.
Commented by 히언 at 2014/07/29 14:17
무슨 말인지 이제 이해했습니다.

svc 모드에서 context switching을 구현하지 않고
보통은 system mode에서 구현을 하며,
usr mode와 system mode는 sp를 공용으로 사용한답니다. ^^
Commented by 학생 at 2014/07/29 15:05
네 답변 감사합니다.
컴공 학생인데 방학중에 임베디드 공부한답시고 이책 저책 기웃기웃 거리는데 자꾸
구슬만 늘어나고 꿰지는 못하고 있는 기분입니다 :(
책 거의다 읽어가는데 라즈베리파이 책과 보드를 좀 뒤적거려봐야겠네요
마음같아선 저자님 개인적으로 만나서 이것저것 다 물어보고싶은 심정입니다 ㅎㅎ
Commented by 깜찍한 눈토끼 at 2014/07/29 18:16
2장에 - 10 AMBA - Soc 안에서 IP끼리의 Bus규격 부분에서 질문 있습니다.

Page 153.

제일 윗 문단에서 word단위의 burst라면 address의 A[1:0] = 00 이어야 한다고 말씀하셨는데.
WRAP type을 말씀하신거죠? 그래서 첫 주소가 00인걸 권장하니까 00이라고 하시는건지.. 그다음에 half word에서는 a[0] = 0..? 제가 뭔가 혼동이 있는거 같습니다 이해가 잘 되지않네요;
A[1:0] = 10 은 제가 알기론 2비트 binary 10 즉 2'b10으로 알고있거든요 ㅜㅜ

제가 단단히 잘못알고 있나요...
Commented by 히언 at 2014/07/30 12:51
음 WRAP type word 단위라면 4byte 단위의 align이 되어야 되니까, 주소중 하위 비트는 4바이트 단위로 끊어져야 하니까 00, half word는 2byte단위니까 하위 주소가 10으로 끝나니까 burst가 되지 않는다는 의미에요!
Commented by San_Kim at 2014/07/30 13:41
아 if half word 가 10이라면 burst안된다는 말이였군요!
전 갑자기 10이 어디서 튀어 나왔는지 했네요 예를 드신거였구나..
Commented by 회로공부시작 at 2014/07/30 15:03
강좌 너무 좋네요...
통신 쪽하다가 전자회로 쪽왔더니 뭐가 뭔지 몰라 헤매는 중에
관련 강좌, 책 마막 찾다가 이곳을 알게되었는데요.
설명을 너무나도 잘해주시는군요 +_+
옆에서 설명해주는 느낌이랄까... 하하
조만간 책도 구매할 예정입니다!

그런데 How to debug 부분은 활성화가 안되어 있는데
아직 오픈을 안하신건가요?
책에는 있는 부분인거 같은데...
Commented by 히언 at 2014/07/30 16:01
ㅎㅎ 캄샤합니다.

How to debug는 책이 출간되면서
출판사와 협약으로
모든 챕터는 공개 유지,
디버그 부분은 비공개로 책에만 수록하도록 했습니다. ^^.

나머지가 공개되어 다행이에요!
Commented by 회로공부시작 at 2014/07/30 17:38
책 구매했습니다!
빨리 왔으면 좋겠군요. ㅎ ㅏㅎ ㅏ.

책을 사면 공개되지 않은 부분을 볼수 있는
장점도 있네요. 기대됩니다.

책 보면서 궁금한점 질문하겠습니다.
잘 부탁드립니다~
Commented by 히언 at 2014/07/31 13:02
감삽니다~!!! 웰컴투 임베디드입니다!
Commented by 아는척하는 맘모스 at 2014/08/04 01:13
아래는 arm 부트코드의 일부인데 아시는 대로 설명 좀 부탁드립니다.

아울러 아래에 질문한 사항에 대해 해답이 될만한 서적이 있다면 추천 바랍니다.




#include <version.h>

#if defined(CONFIG_S5PC110) && defined(CONFIG_EVT1) && !defined(CONFIG_FUSED)
.word 0x2000
.word 0x0---------------------->.word gas지시어가 주소를 저장한다고 하는데
.word 0x0 .word 0x2000은 0x2000이라는 값을 저장하는 겁니까? 아니면 0x2000의 주소를
.word 0x0 저장하는 겁니까? 주소를 저장할 경우에 어느 곳에 어떻게 저장하는 겁니까?
#endif 제 얘기는 특별한 변수 같은 것도 없는데 어디에 저장 한다는 겁니까?

.globl _start
_start: b reset
ldr pc, _undefined_instruction
ldr pc, _software_interrupt
ldr pc, _prefetch_abort
ldr pc, _data_abort
ldr pc, _not_used
ldr pc, _irq
ldr pc, _fiq

_undefined_instruction: .word undefined_instruction
_software_interrupt: .word software_interrupt
_prefetch_abort: .word prefetch_abort
_data_abort: .word data_abort
_not_used: .word not_used
_irq: .word irq
_fiq: .word fiq
_pad: .word 0x12345678 /* now 16*4=64 */
.global _end_vect
_end_vect:

.balignl 16,0xdeadbeef--------------------> .balignl 이 것이 뜻하는 바가 무엇입니까?
/*************************************************************************
*
* Startup Code (reset vector)




_board_init_r_ofs:
.word board_init_r - _start------------------> 여기에서는 board_init_r의 주소에서 _start의 주소를 뺀 값을 저장

_rel_dyn_start_ofs: 하라는 얘기입니까?
.word __rel_dyn_start - _start
_rel_dyn_end_ofs:
.word __rel_dyn_end - _start
_dynsym_start_ofs:
.word __dynsym_start - _start




exception handlers
*/
.align 5
undefined_instruction:
get_bad_stack
bad_save_user_regs
bl do_undefined_instruction

.align 5
software_interrupt:
get_bad_stack_swi
bad_save_user_regs
bl do_software_interrupt




------------------------------------------------------------------------------
.rodata------------------------------------->.rodata가 뜻하는 바가 무엇입니까?
Commented by 히언 at 2014/08/05 19:23
똑같은 글을 두개나 써 놓으셔서, 하나는 지웠사와요.

http://www.ic.unicamp.br/~celio/mc404-2013/arm-manuals/GNU-ARM-Assy-Quick-Ref.pdf
이거 함 보시고,
자세한 내용은
https://web.eecs.umich.edu/~prabal/teaching/eecs373-f11/readings/Assembler.pdf
정도 보면 되지 않을까 생각해요!
Commented by 한민우 at 2014/08/06 14:48
크롬에서
강의실전체맵2 ⓡ Source Insight 팁들 - PACKED, MACRO, Parsing 문제

를 보려고 눌렀는데 악성코드를 제공하는 사이트라고 뜨네요 ㅜ 저만그런가요?

Commented by 히언 at 2014/08/06 15:09
저도 그러네요!

아마도 블로그 주인장이 광고같은거 삽입하면서 문제가 생긴 것 같은데,
또는 robot에 crawl 을 disallow 해 놓았던가.

구글은 A description for this result is not available because of this site's robots.txt – learn more.
라고 말해주네요.

ㅠㅠ
Commented by 공존 at 2014/08/07 22:41
U-BOOT 부트로더의 start.S라는 화일에서 아래와 같은 매크로 함수를 발견했는데, 이해가 안가는 부분이 있어 여쭙니다.

.macro get_bad_stack -----------------------> get_bad_stack 매크로의 역할이 무엇입니까? bad_stack은 무엇을 말하는 것입니까?
ldr r13, IRQ_STACK_START_IN @ setup our mode stack (enter
@ in banked mode)

str lr, [r13] @ save caller lr in position 0----->saved stack의 position 0은 무엇을 말하는 것입니까?
@ of saved stack 일반적으로 말하는 stack을 말하는 것입니까?
mrs lr, spsr @ get the spsr
str lr, [r13, #4] @ save spsr in position 1 of------->spsr값을 스택에 쌓으면 arm은 풀디센딩

방식이어서 r13+4가 아니라
@ saved stack r13-4의 논리로 해야 타당한것 아닙니까? 주소가 줄어야 되는거 아닙니까?

mov r13, #MODE_SVC @ prepare SVC-Mode----------------->r13은 SP인데 어떻게 스택포인터에다가 번지가 아닌

상수를입력합니까?
@ msr spsr_c, r13 상수를 입력하면 sp는 어떻게 되는 것입니까?
msr spsr, r13 @ switch modes, make sure
@ moves will execute
mov lr, pc @ capture return pc--------------->pc에서 lr로 다시 lr에서 pc로 전송하는 이유가 뭡니까?
movs pc, lr @ jump to next instruction & 원래 있던 pc를 그냥 그대로 두는 것과 무엇이 다릅니까?
@ switch modes.
.endm
Commented by 아는척하는 맘모스 at 2014/08/08 17:25
위의 질문에서 banked mode가 뜻하는 것이 무엇입니까?
책에 나와 있는 모드는 아래의 것이 전부입니다.
user, fiq, irq, svc, abort, undefined, system , monitor 모드
Commented by 히언 at 2014/08/09 11:25
대부분의 답이 나와 있는 건 아니지만
http://pds17.egloos.com/pds/200911/13/06/S3C6400_uBoot_Startup.pdf
정도 보시면 대충 감이 오실 듯 합니다만.
Commented by 공존 at 2014/08/10 23:57
안녕하세요
저의 질문에 답하여 주셔서 감사합니다.
samsung Exynos4412 cortex-a9 쿼드코어 메모리내장 프로세서에 관한 전체 메뉴얼의 링크 좀 알 수 있을까요?
Commented by 히언 at 2014/08/11 01:06
Commented by San_Kim at 2014/08/12 17:08
보드를 구해서 책보고 직접 이것저것 해보고 싶은데요,

라즈베리파이 B+를 구매했습니다.

이걸로 ARM 관련된 공부가 가능 할까요?

제가 아직 초보라 리눅스(라즈비안)도 배우면서 하고 있거든요 ㅜㅜ

armcc,tcc? 같은것도 따로 install해야 하는건지 궁금합니다!
Commented by 공존 at 2014/08/12 21:54
저는 IT EXPERT ARM으로 배우는 임베디드 리눅스 시스템을 보고 있는데
적극 추천하는 바입니다.
Commented by San_Kim at 2014/08/13 11:15
공존// 추천감사합니다 ^^

혹시 보드도 따로 구입하셔서 사용하고 계신지요?
Commented by San_Kim at 2014/08/14 10:14
임베디드 레시피 다 보고 나면 공부해봐야겠네요 감사합니다!
Commented by 아는척하는 맘모스 at 2014/08/14 19:45
보드도 좋아야 겠지만, 관련 서적및 메뉴얼이 얼마나 뒷밧침해주느냐가 관권입니다.
위의 책에서 다루는 보드는 dtk4412이며 참고로 관련 사이트를 링크하겠읍니다.
http://www.howchip.com/
추가로 제가 본 적이 있는 서적인데 아래의 사이트에서 다루는 책은 전부 읽는게 이롭습니다.
http://cafe.naver.com/embeddedcrazyboys

한빛미디어 유닉스 리눅스 프로그래밍 필수 유틸리티 백창우 지음
Commented by 히언 at 2014/08/15 01:59
아이공~ 화이팅입니다!

armcc, tcc 설치하셔서 라즈베리파이 위에서 직접 컴파일 하셔도 되겠지요!
드라이버 정도라면 가능하지 싶은데
실제로는 엄청 느린가 보네요.
http://www.delmadang.com/community/bbs_view.asp?bbsNo=71&bbsCat=0&indx=438589&page=2

그냥 크로스 컴파일 환경이 훨씬 좋은가봐요!
Commented by San_Kim at 2014/08/18 18:08
댓글 달아주신분들 감사합니다!

유닉스 리눅스 프로그래밍 필수 유틸리티는 워낙 유명해서 여럿 추천을 받았습니다
그래서 이미 갖고 있고 차근히 읽고 있습니다!

히언// 역시 크로스 컴파일이 답인가 보네요 ㅜㅜ 그냥 vm ware로 우분투 설치하고 ARM - 라즈베리파이 크로스컴파일환경으로 만들어 봐야겠어요!!
Commented by 아는척하는 맘모스 at 2014/08/14 19:39
#ifdef MEM_DLLl_ON
ldr r0, =APB_DMC_0_BASE <-------------------------?

ldr r1, =0x7F10100A
ldr r2, =DMC_PHYCONTROL0 <-----------------------?
str r1, [r0, r2]

ldr r1, =0xE0000084
ldr r2, =DMC_PHYCONTROL1 <---------------------
str r1, [r0, r2]

ldr r1, =0x7F10100B
ldr r2, =DMC_PHYCONTROL0 <---------------------
str r1, [r0, r2]

안녕하세요?
exynos4412 datasheet를 아무리 검색해도 위에서 화살표한 부분은 검색이 되지 않더라고요
별도의 exynos4412 메뉴얼이 필요한 겁니까? 아니면 메모리 쪽의 datasheet를 봐야 하는 겁니까?
Commented by 히언 at 2014/08/15 01:54
실제 코드를 보니까, 주소가 정의되어 있는데요?
http://www.lumit.org/LASO/zh/chp6-6.html

데이터쉬트에 그 주소가 어떤 용도인지 확인하심 될거 같은데요.

그리고, 맘모스님;;;
저는 특정한 디바이스에 대한 코드를 따로 리뷰해 드리지 않아요 ㅠㅠ.
Commented by 신동섭 at 2014/08/15 02:10
안녕하세요. 틈틈이 시간날때마다 강의 잘보고 있습니다. 어려운 내용을 쉽게 풀어 설명해주셔서 감사합니다.

제가 예전 루미내리사(지금은 TEXAS INSTRUMENT)의 lm3s8962 mcu로 거리센서(hc-sr04) 이용해서 거리 재는 프로그램을 만들었는 데요. 가까이 그리고 멀리 거리를 측정할 때의 변화는 감지되지만 측정값이 부정확해서 원인을 찾고 있습니다.

도움을 받고자 이렇게 질문을 하게 됬습니다.

우선 기초 설정을 잘못했는 지 알고 싶네요.

첫번재 질문은,

Timer Capture Mode로 GPIO Pulse Width 값을 구했는 데요. Rising mode일 때 Falling mode일 때 두개의 Timer Interrupt Handler를 호출하여 TimerValueGet을 각각 구했습니다.

Falling Edge Mode와 Risig Edge Mode의 TimerValue 값의 차를 이용하여 Pulse Width의 시간을 구하고자 했습니다.

제가 mcu system clock setting을 50MHZ로 설정을 했습니다. TImer가 System Clock에 의해 run됨으로

1초에 50M ticks이 되니까 1uS는 50 tick이 맞는 지 궁금합니다.


두번째는 센서에 pwm신호를 주는 부분이 있는 데요. PWMClockSet을 mcu 모체 주파수와 같도록 설정을 했는 데 PWM과 mcu 모체 주파수는 같도록 하는 것이 좋다고 배운적이 있는 데 그 이유를 알고 싶습니다.

세번째는 PWM과 모체주파수가 같을 때(50MHZ), PWM 주기가 60ms가 될 때 3000000 tick이 맞는 지 확인하고 싶습니다. 또한 이 PWM의 duty cycle을 주기 / 6000으로 했을 때 10uS 동안 high 신호가 지속되는 지 확인하고 싶습니다.

연습장에서 제가 생각한 논리로 계산을 하고 값을 프로그램에 대입을 했는 데 측정값이 틀리게 나와서 혹시 잘못알고 있나 해서 기초 질문을 올리게 됬습니다.

감사합니다.
Commented by 히언 at 2014/08/19 03:23
안녕하세요!
1. 맞습니다!
2. 같도록 하면 오차가 줄겠지요!, 그리고 lock time도 없으니까 좋다고 하지 않았을까 추리됩니다. PLL도 어차피 synthesizer니까 어느정도 오차가 있을 수 있습니다. (이건 순전히 하드웨어 소자의 performance에 dependent하지요!)
3. 3000000 맞습니다
4. 근데 pwm의 duty가 의미가 있나요???? width 자체로 정보를 전달하는데 얼마나 오래 high가 지속되느냐를 측정한거 아니에요?
Commented by 신동섭 at 2014/08/19 23:56
답변감사합니다.

4. hc-sr04 센서에 10uS high동안의 trigger pulse를 주는 데 권장 주기가 60ms의 duty cycle(주기)가 필요해서요.

맞습니다. pulse width가 오래 지속되느냐를 측정하는 실험입니다.
Commented by San_Kim at 2014/08/27 17:16
히언님 도와주세요 ㅜㅜㅜ

http://www.rasplay.org/?p=3026#comments
제가 이런 강좌를 보고 있는데 의문점이
1.라즈베리파이 결선도에서 RS (data sheet를 보니 Register Select라고 하네요) 쪽에 Ground를 주었는데, 이 의미가 그 기능을 사용하지 않겠다는 의미인가요? 만약 사용하지 않겠다는 의미가 맞다면 굳이 GND로 연결하지 않고 그냥 가만히 냅둬도 같은 의미가 아닌가요..?

datasheet 링크
http://www.eleparts.co.kr/data/design/product_file/DNS/CHARACTER/LMB162AFC.gif
Commented by 히언 at 2014/08/27 19:22
엄... 일단 데이터쉬트가 보이질 않아요.
그리고.. 엄.. 강좌에 그림도 깨져요..

그건 다른 쪽 강좌 얘기니까. 일단 패쓰하고요.
질문을 요약하면

Ground 준 이유가 사용하지 않겠다는 이유라면
NC로 해도 되는거 아니냐? 인가요?

글쎼요! 위의 강좌내용에서 뭔가를 하는데 필요했겠지만

일반적인
GND 하는 이유는
덜렁거리면서 엉뚱한 값을 넣지(input) 말고 0V 지켜라 거든요?
거기에 부합되지 않을까요?
Commented by San_Kim at 2014/08/28 10:39
아.... 맞네요 그런이유라면 분명히 납득이 갑니다!! 다른 커뮤니티에 물어봤는데 엉뚱한 대답이 나와서요 ㅜㅜ

그렇겠네요!! NC = 아무것도 연결안함 이뜻이죠?!

그리고 질문에서 실수한게 RS가 아니라 R/W pin이였네요 ㅜㅜ

아마 제 생각에는 LCD패널에 Print만 하고 Read 하거나 Write할 일이 없으니까 GND로 막아? 놨다고 보네요!

친절한 답변 감사합니다!

Commented by 아는척하는 맘모스 at 2014/08/31 00:00
안녕하세요
안드로이드 빌드 관련해서,
openjdk-7_7u65-2.5.1.orig.tar.gz라는 화일을 구하기는 했는데 설치방법을 모르겠읍니다.
도움 좀 주십시요 ubuntu 10.04에 설치해야 합니다다.
Commented by 히언 at 2014/08/31 14:13
http://askubuntu.com/questions/420910/openjdk-7-installation-trouble-on-10-04
구글에 쳐 넣으니 제일 먼저 나옵니다. apt-get 을 이용하지 않는 이유가 있나요.
그리고 압축 풀고 configure 하시고 make install 하면 됩니다.
Commented by San_Kim at 2014/09/05 12:29
히언님 책 240p에서 해답1)에대한 설명중 오타가 있는거 같습니다. (아니면 뻘줌)

bolding된 글중에 armlink -elf -ro-base 0x0 -rw-base0x10000 taget.elf ebedded.o
recipes.o main.o 이렇게 되있는데

239page의 문제가
RO의 위치를 (RO도 오타네요 R0라고 나와있음.) 0x10000 RW의 위치를 0x20000에 relocate 시키라고 하셨는데 위에 파라미터는 ro - base가 0x0 rw-base가 0x10000이라고 되있네요..?

Commented by 히언 at 2014/09/13 17:06
오! 넵! armlink -elf -ro-base 0x10000 -rw-base 0x20000 -o target.elf embedded.o recipes.o main.o 가 되어야겠어요! ㅠㅠ 접수 완료!
Commented by 용감무쌍한 범고래 at 2014/09/11 23:22
안녕하세요. 학교도서관에서 임베디드레시피를 보고 스케치는 몇일전에 구매를 했습니다. 스케치 내용중에 203 노어 플래시가 뭐죠? 부분 중 이해가 안되는 부분이 있어서 문의드립니다.

노어플래시에 있는 바이너리를 지우는 동작의 순서를 메모리 영역을 통해서 설명을 하고 있는 데요.

__address____|_________0_________4_________8_________C
SD:00000000|>54202F2F 315F3233 30303030 57203130
...

NOR FLASH는 SDRAM으로 복사하지않고 CPU가 바로 EXECUTE를 하는 것으로 알고 있는 데
1. 여기서 SD의 의미는 무엇인가요?
2. |>의 의미는 무엇인가요? 왼쪽으로 bit시프트를 하고 | 처리를 한다?
3. _________0_________4_________8_________C 네 개의 레지스터?

표에 나오는 지우기 동작설명과 메모리영역으로 설명한 부부분이 서로 매칭이 잘 안되서 이해가 잘 안가네요.

감사합니다.


Commented by 히언 at 2014/09/13 17:06
아이고 이건 소토님이 답해주셔야 할 것 같은디요 ㅠㅠ
Commented by soto at 2014/11/14 09:31
안녕하세요.

1) SD는 특별한 의미는 아니구요. flash memory 주로를 표현하기 위한 키워드라고 보시면 됩니다.
2) "|>" 그냥 구분하는 겁니다. 메모리 주소와 데이타라는 구분을 해 주는 것입니다. 특별한 건 아닙니다.
3) _________0_________4_________8_________C 메모리 주소를 의미합니다.
이렇게 표현하면 더 쉽겠네요. ^^

SD:00000000 54202F2F
SD:00000004 315F3233
SD:00000008 30303030
SD:0000000C 57203130


다음 인쇄판 나올 때 보강을 하도록 할께요. ^^

즐거운 하루 되세요.
감사합니다.

Commented by Felix at 2014/09/12 14:36
ARM Exceptions and Modes와 관련하여
책 128페이지의 아래쪽에 있는 다음 부분의 설명에 오류가 있는 것 같습니다.
-----------------
5) 그러고 나서 어떤 일이? IRQ Exception Vector 주소인 0x12로 가야 하니까,
PC : = 0x12 이에요.
여기까지는 Hardware적으로 다 알아서 처리가 되고요. Software 적으로는 0x12에 있는 IRQ handler에서 처리해야 할 것들이 남아 있는 게죠.
----------------

IRQ Exception Vector 주소는 책 124 p상단의 표에 따르면 0x18이 되어야 할것 같습니다.
0x12는 (IRQ 모드를 나타내는 CPSR[4:0]의 값)을 잘못 적으신것 같습니다.
Commented by 히언 at 2014/09/13 17:02
오흥~ 맞네요! 0x18이 되어야 하네요~ ㅠㅠ 오류 접수!
Commented by 백전성 at 2014/09/15 13:18
저 시스템엔지니어가 되고 싶은데요.. 지금 현재 컴퓨터공학과 3학년이거든요.
먼저 임베디드 레시피라는 책을 좀 사고 싶은데요 어떻게 사죠?
그리고 여기서 출판하신게 아니더라도 그걸 이해하려면 저같이 코딩만 배워온 학생한테는 완전한 이해가 어려워보여요.. 기본적으로 좋은 책은 뭐가 있나요?
Commented by 히언 at 2014/09/15 14:21
홍홍홍
임베디드 레시피는
http://www.cornerbook.co.kr/shop/goods/goods_view.php?goodsno=186785431&category=
에서 구입가능하시고.. (쑥스럽구만요)

기본적으로 좋은 책은..
좀 생각해 봐야겠는걸요! ㅎㅎ
Commented by 신준규 at 2014/10/01 11:06
안녕하세요~

궁금한 점이 있는데, 블로그에는 포스팅이 되어있지 않은 것 같습니다.

bootloader/ application section으로 나뉘어져있는 시스템에서

bootloader 안의 변수의 값을 application에서 변경할 수 있는 방법이 있을까요???
Commented by 히언 at 2014/10/01 11:12
bootloader의 변수값을 변경한다는 의미가 애매하지만,
application이 실행된 후에 bootloader에서 사용될 "어떠한 값"을 수정하고 싶은신거라면
flash(non volatile)의 특정영역에 application이 값을 적고
bootloader가 그 값을 읽어드리는 형태가 가장 일반적입니다.

안드로이드등의 app을 만들어 보셨다면
sharedPreference 처럼 말이죠.
Commented by 코더 at 2014/10/16 20:59
공개된 강좌 잘 보고 있습니다. 혹시 그림은 어떤 툴을 이용하신건가요? 아니면 손으로 그리신건가요? ㅎㅎ 항상 볼 때마다 궁금했는데 여쭤봅니다.
Commented by 히언 at 2014/10/17 10:54
직접 수작업 입니다. ^^
Commented by 아는척하는 맘모스 at 2014/10/17 19:53
안녕하세요?

아래의 코드에서 질문 드립니다.

아래에서 str r3, [r0, #((XIP_START & 0x00f00000) >> SECTION_SHIFT) << PMD_ORDER]!

가 무슨 역할을 하는 지 궁금합니다.

그리고 & 0x00f00000) 연산을 하는 이유를 알고 싶습니다.

아시는 대로 설명 부탁 드립니다.

관련 문서라도 추천 부탁드립니다.







linux/arch/arm/kernel/head.S




__create_page_tables:




#define XIP_START XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR)
mov r3, pc
mov r3, r3, lsr #SECTION_SHIFT
orr r3, r7, r3, lsl #SECTION_SHIFT
add r0, r4, #(XIP_START & 0xff000000) >> (SECTION_SHIFT - PMD_ORDER)
str r3, [r0, #((XIP_START & 0x00f00000) >> SECTION_SHIFT) << PMD_ORDER]!
ldr r6, =(_edata_loc - 1)
add r0, r0, #1 << PMD_ORDER
add r6, r4, r6, lsr #(SECTION_SHIFT - PMD_ORDER)
1: cmp r0, r6
add r3, r3, #1 << SECTION_SHIFT
strls r3, [r0], #1 << PMD_ORDER
bls 1b
#endif
Commented by 히언 at 2014/10/18 13:34
Commented by 아는척하는 맘모스 at 2014/10/18 20:28
#(XIP_START & 0xfff00000) >> 로 연산하지 않는 특별한 이유가 있읍니까?
Commented by 히언 at 2014/10/18 22:02
그그그.. 글쎄요?
Commented by 아는척하는 맘모스 at 2014/10/23 03:57
DTK4412 보드로 학습을 하고 있는데요
메모리에 대한 정보는 아래가 전부입니다.
1GB LPDDR2(POP with CPU)
위에 해당하는 부품번호나 datasheet 좀 추천 바랍니다.
Commented by 히언 at 2014/10/23 16:38
그그 글쎄요? 이전에 이거 다루는 책으로 공부하시고 관련된 커뮤니티에서 활동하신다고 글을 쓰셨던데 거기에 자료가 없나요? 또는 삼성에 문의하심이 어떠신지요?
Commented by 음음음... at 2014/10/24 16:43
학교도서관에 책신청했는데 책 재고가 없다네여?!
도서관에서 잘못알아본걸까여... 아니면 책이 다 떨어진걸까여? ㅠ.ㅠ
Commented by 히언 at 2014/10/24 17:10
헙.. 출판사에 알아볼께요! 일단은
http://www.cornerbook.co.kr/shop/goods/goods_view.php?goodsno=186785431&category=
에서 알아보심 되는데
인터파크나 교보서적 같은데는 품절로 나올꺼에요 ㅠㅠ.
Commented by ruring at 2014/10/30 14:15
안녕하세요 ㅎㅎㅎㅎㅎㅎㅎㅎ
매우 간만에왔는데! 핼프좀요!
리눅스 시간동기화하려는데 UDP차단 환경입니다.
다른방법이 있을까요 '-'?
Commented by 히언 at 2014/10/30 17:08
오홋, 오랜만이네요!

리눅스 시간동기화라는게 어떤거에요?
timezone setting? 아니면 rsync 이런거요?
쬐끔더 상황을 자세히~ 써 보세용~
Commented by KYUNKUN at 2014/11/26 14:00
안녕하세요~ 차근차근 잘 읽어보고 있습니다. 너무나 감사합니다.
혹시 SSD에 embedded OS를 사용하는 것과 firmware를 구현하는 경우 차이를 알 수 있을까요?
embedded OS와 firmware 차이를 도저히 알 수가 없네요
Commented by 히언 at 2014/12/18 00:51
안녕하세요! 임베디드OS와 펌웨어는 다른 이야기인데, 이걸 어떻게 설명해야 좋을지 고민이 되네요. PC로 따지면 OS는 윈도우, OSX, 리눅스를 말하는거고, 펌웨어는 특정 하드웨어에 포팅된 OS라든가, 특정 하드웨어에 동작하는 드라이버라든가, 특정 하드웨어에 사용되는 부트업 코드라든가를 의미하거든요. 그러니까 두개의 차이를 말할 수는 없어요!
Commented by sungsu at 2014/12/18 00:14
리눅스는 참 매역이 있는것 같군요... 아직 초보라 c부터 천천히 가려 합니다
Commented by sungsu at 2014/12/18 00:15
제가 pcb artwork 은 도움이 되어 드릴 수 있습니다. ^^
Commented by 히언 at 2014/12/18 00:29
환영합니다!
Commented by ruring at 2014/12/30 16:00
다른거하다가 다시온 루링입니다 '______________' 흐흐

으흐? rsync?? 미러링할때 그건가요?

그냥 현제시간 동기화에요 '-' UDP뚫려있으면 NTP 걍쓰면되는디 -_-
Commented by ruring at 2014/12/30 16:06
그나저나 요즘 뭐하세요 '______________________'

전 C하다가 C++하다가 다시 C만 하다가.. 짬뽕하고.. C#하다가 -_- (리눅스갔다가 윈도우했다가... avr갔다가... 다시 arm했다가..ㅜㅜ)
artwork했다가... 웹했다가(이미지작업 및 소스.... 그누보드찍고..) 지금은 network하는데.. 다음은 관련 앱할꺼같네요 ㅜㅜㅜㅜㅜㅜㅜ 정체성을 모르겠어요 ㅜ_ㅜ

넉두리..
Commented by 히언 at 2014/12/30 17:52
ㅎㅎㅎㅎㅎㅎ 잘 지냈나요? 벙개 또 한번 해야되는뎅 ㅎㅎㅎㅎ 그쵸?
Commented by ruring at 2014/12/30 19:24
분당입니다 '-')/
Commented by 히언 at 2014/12/31 00:08
ㅎㅎㅎㅎㅎ 전천후 엔지니어는 분당에 계시는군요!
Commented by ruring at 2014/12/31 11:44
전천후라뇨 =-= 그렇지않습니다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
수박 속을 파먹어야되는데 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
아직 껍대기만 무늬구분없이 긁어먹을라고 노력하고 있습니다 ㅋㅋㅋㅋㅋㅋㅋ
Commented by 이상원 at 2015/01/02 13:31
책이 좀 더 대박나길 바랍니다. 홍보가 부족한 거 같기도 하고.. 너무나 좋은 책입니다.

임베디드 전공하여 현대자동차 계열사에 근무하고 있습니다.
저는 임베디드 레시피를 취직 후에 알게되었는데 그때는 저도 이미 임베디드 전문가가된 후였습니다.
책을 보고 감탄하여 아무것도 모르는 신입 사원들에게 꼭 사서 공부하라고 권장하고 있습니다.
그런데도 얘네들이 사놓고 활용을 안하네요. " 책에 있잖아? 모르는 게 나오면 읽어 보지 왜 안읽어? "
라고 반복하게 되네요.

현재 책에 대한 내용도 더 업그레이드 하시고, 끊임없는 활동 부탁 드립니다.
Commented by 히언 at 2015/01/02 15:44
새해 복 많이 받으세요~!
감사한 질책과 조언이 다시 한번 저를 반성하게 합니다.

다시 한번 심기일전하여 흡! 달려보겠습니다!
Commented by ruring at 2015/01/02 16:43
새해 복 많이 받으세요 '____________'

그나저나 호칭이 아져씨라고쓸뻔 -_-ㅋ 오빠라고해야되나 -_-ㅋ 작가님? 선배님? 선생님?
Commented by 히언 at 2015/01/02 17:32
ㅋㅋㅋㅋ 왜이러시나요~

어쨌거나, 새해 복 많이 받으시고,
모든 일에 럭키걸이 되도록 기대합니다~!!
Commented by 실리콘로드 at 2015/01/16 18:02
희언님 안녕하세요
여기 블로그 운영하시는 분 맞으신거죠?

희언님의 이메일을 알고싶습니다

드릴말씀이 있어서....
Commented by 히언 at 2015/01/16 21:48
안녕하세요! 희언아니고 히언이에요 ㅠㅠ.

넹 블로그를 운영하는 것은 맞습니다만. 무슨 일 이세요?
이메일은 hieonn@cyranoproject.com 으로 주시면 됩니다!

화이팅!
Commented by dslab at 2015/01/21 22:21
안녕하세요 히언님!
얼마전 우연히 임베디드 공부 커리큘럼을 찾아보다가 알게되어 이렇게 글을 남기게 되었습니다.
임베디드에 대한 정말 좋은 자료들이 많은 것 같아서 큰 도움이 되고 있습니다.
컴공과를 졸업했지만 진로에 대해 방황하며 여기저기 네트워크, 시스템 엔지니어 인턴으로만 2번 생활하고
현재는 보안솔루션 회사 엔지니어로 근무하고 있습니다.
다만 프로그래밍 공부에 대한 마음은 접지 않고 계속 마음에 두고 있고, C언어는 계속해서 공부하고 있습니다.
서론이 길었네요 :)
좋은 강좌를 올려주셔서 너무 감사해서...

교회를 다니고 있는데 임베디드를 배우면 오래된 교회에 낙후된 환경을 조금 더 편리하게 쓸 수 있겠다는
생각이 들어서 배우고 있습니다. ARM Cortex-M4 MCU가 있는 장비를 가지고 공부중입니다 ^^

음.. 제가 궁금한건 임베디드를 공부하기 위해서 어떤 큰 흐름을 잡고 공부해야하는지 잘 모르겠다는점입니다.

학부시절 기본적인 전공은 다 공부했고 나름 좋은 성적도 거뒀지만 임베디드를 깊이 파본적은 없어서...
쉽지 않더군요.

보통은 C, OS -> TCP/IP -> 디바이스 드라이버, 리눅스 커널 분석, 포팅, 등등 순으로 배운다던데

사실 아직도 잘 모르겠네요... 큰 흐름과 또 관련된 서적들을 1, 2권씩 추천해주시면 히언님의 강좌 + 서적을 통해 더 깊이 공부할 수 있을 것 같습니다...

글이 너무 길어졌네요 읽어주셔서 감사드리고, 다시 한 번 이런 강좌 올려주셔서 너무나 감사드립니다.
Commented by 히언 at 2015/01/22 00:08
ㅎㅎㅎ 안녕하세요! 환영합니다!

일단은 Embedded Recipes 책을 뻔뻔하게도 권하며,

뭔가 만들어보고 싶으시다면,
리눅스 커널 분석보다는 리눅스 드라이버와 사용법을 익히시기를 권하고요.
그리고 마지막으로 라스베리파이를 이용해서 조그마한 프로젝트를 하나 해보시기를 권합니다.

좀더 깊숙한 공부를 원하시면
라스베리파이에 리눅스를 포팅해 보시길 권합니다. 성공하지 못해도 많은 것을 배우실 수 있으실 겁니다!

나름 생각하는 구도인데, 도움이 될려나 모르겠습니다!

그럼 웰컴투 임베디드!
Commented by 자뻑하는 얼음의신 at 2015/01/29 16:36
책 519쪽 젤 아래문단에서
>>>>>
2^25개 만큼의 크기는 16진수로는 0x800000 만큼의 크기이고요, (16MB). 한 주소가 2byte씩 이니까, 최종 16MB까지 저장 가능한 메모리라고 보면 되겠습니다요.
>>>>>
여기서 2^25가 아니라 2^23 아닌가요? 2^23= 8388608 = 0x800000 이렇게 나오던데... 잘 모르겠네요.
Commented by conu at 2015/01/31 17:37
고퀄리티 강좌 항상 감사드립니다.
Commented by 타이거 at 2015/02/04 08:39
안녕하세요~ 잘보고있는 독자입니다.

다름이 아니오라 잔잔한 오타를 비롯하여 간간히 나오는 오류들로 인해 이해가 조금 어려운 부분이 있습니다.

명품책이오나. 전공서적같은 느낌으로 집중하다가 간혹 걸리게 되면 매우 찜찜하여 그러온데
혹시 이제까지 나온 오탈자오류 정오표는 없는지 여쭙겠습니다.

page211의 symbol Table에서 Name이 Ndx을 말하는것인가요?
Commented by 이인호 at 2015/02/04 13:46
안녕하세요. 저는 루비페이퍼 기획 팀장 이인호라고 합니다.

자동차 부품 회사에서 엔지니어로 일하는 후배한테 소개받고 왔습니다.
선생님 책이 오타도 그렇고 마케팅도 그렇고 책 판매에 너무 아쉬운 부분이 있는데,
이렇게 평판이 좋은 책을... 좀 아쉬운 생각이 들었습니다.

그래서 선생님 책을 저희 출판사에서 재출간하고 싶습니다.
선생님께서 피력하시는 홍익인간 정신도 잘 이해했고, 강좌가 모두 웹에 개재되었지만,
시기를 타는 분야도 아니고 평판이 워낙 좋아서 꼭 내고 싶습니다.
출간일이 2009년도니까 코너북에서는 계약이 만료되었으니 재출간에 문제는 없을 것 같습니다.

관련하여 꼭 한번 찾아뵙고 싶은데요.
선생님 연락처를 알 수 있을까요?
제 연락처는 010-5610-5264입니다.
문자를 남겨 주시면 바로 전화드리겠습니다.

바쁘시겠지만 더 많은 임베디드 공학도들에게 선보일 수 있도록
꼭 허락해주셨으면 합니다.
감사합니다.

이인호 드림.

Commented by msp430 at 2015/02/06 14:36
안녕하세요! sensor network쪽 공부를 하다가 여기까지 왔습니다. 정말 많이 배우고 있습니다!

한 가지 질문드리고 싶은것이 있는데요. 혹시 msp430에서 플래시 메모리에 커널 이미지를 저장하고 이것을 사용해서 부팅하는 것이 가능한가요? 커널 이미지를 usb로 직접 올리는 것이 아니라 파일 시스템으로 플래시에 저장하고 이미 존재하는 커널 대신 저장되어 있는 새로운 커널로 부팅시키는게 목표입니다.

제가 이 쪽에 대해 잘 몰라서 질문 자체에도 엉성한 점이 있는 것 양해 부탁드립니다ㅠ 감사합니다!
Commented by 여리여리한 설인 at 2015/02/06 14:39
안녕하세요! sensor network쪽 공부를 하다가 여기까지 왔습니다. 정말 많이 배우고 있습니다!

한 가지 질문드리고 싶은것이 있는데요. 혹시 msp430에서 플래시 메모리에 커널 이미지를 저장하고 이것을 사용해서 부팅하는 것이 가능한가요? 커널 이미지를 usb로 직접 올리는 것이 아니라 파일 시스템으로 플래시에 저장하고 이미 존재하는 커널 대신 저장되어 있는 새로운 커널로 부팅시키는게 목표입니다.

제가 이 쪽에 대해 잘 몰라서 질문 자체에도 엉성한 점이 있는 것 양해 부탁드립니다ㅠ 감사합니다!
Commented by 박지용 at 2015/02/07 14:38
안냥하세요. 임베디드 보드 하드웨어적인 질문 올립니다.
인텔 아톰 N2800 으로 개발된 PICO 831 보드를 쓰고있는데요.
SMPS 에서 5V 전원을 뽑아 쓰고 있습니다. 전력은 전혀 부족하지 않은 스펙인데
전원 케이블이 2 ~ 3 미터 정도 길이로 되어 있어서 그런지
SMPS 단자에서 전압을 측정할 때와 PICO 보드 전원 단자에서 측정할때 0.25 ~0.4 [V] 정도 차이가 납니다.
전선이 길어서 저항이 높아진 것 같은데 이런 경우 해결책을 알고 싶습니다.

만약 PICO 보드 전원 케이블을 짧게 해준다면 PICO 보드와 다른 장비 사이의 통신 선인 USB, RS232
케이블 등이 더욱 길어져야 하는데 이게 통신 성능을 저하시킬 수 있을 것 같아서 이런 경우 단순히
통신을 중계하는 정도의 디바이스들이 있는지도 알고 싶습니다.
Commented by 함경섭 at 2015/02/12 20:00
안녕하세요 임베디드에 처음 접하는 학생입니다. 컴공이고 1년수료했어요.
아직 전기 파트 등 아무 그냥 아무 지식이없다고 생각하시면될거같아여.
제가 맵3부터보고있는데 여기서 부터 어떻게 보면되죠? ㅠㅠㅠ
맵 1 맵2 맵3이있는데 1부터봐야하나여?
Commented by 1234 at 2015/03/03 10:32
아무거나 먼저봐도 관계없음
Commented by 함경섭 at 2015/02/12 20:03
제가 현재 군인이이라서 전역까지 약 8개월남았는데.. 일단 군대있다보니 컴퓨터로할수있는건 제한이되네여. 어떻게 커리큘럼을 짜나갸아할지모르곘네여 일단 컴퓨터를 처음 접한다고 생각하시면될거같아여.
Commented by JIC factory at 2015/03/02 23:50
안녕하세요. EMBEDDED RECIPES 책을 보고 공부하는 학생입니다.

다름이 아니라 Software 환경에 대한 질문인데, 혹시 일반인도 책에서 나오는

soft 환경을 구축할 수 있는지 어떻게 구축하는지 질문드립니다.

좋은 책 발간해주셔서 감사합니다.
Commented by 1234 at 2015/03/03 10:33
google
Commented by 김태홍 at 2015/03/17 10:53
책 잘 보았습니다.
한권더 구매할려고 하는데 책 어디서 살수있나요?
대충 검색하니깐 파는데가 없네요..ㅎ
다시 출간해주세요~~
Commented by 여리여리한 얼음여왕 at 2015/05/18 12:46
안녕하십니까!
해외에서 어플관련 개발자입니다만,작년부터 임베디드쪽으로 일하게 되었습니다.
적당한 책이 없어서 계속 헤메고 있었습니다만, 발간? 출간? 된 책을 pdf형태로 구입 가능할까요?
즉 E-book형태로 책이 나오거나 하지는 않는지요?
Commented by 히언 at 2015/05/18 15:04
안녕하세요!

전자첵 형태로는 안나와 있어요! 하지만, 코너북에서 해외 배송도 하니까! 문의해 보시면 좋을 것 같아요!
Commented by 다채로운 순록 at 2015/05/22 11:06
안녕하세요 다름이아니고 정말 기초적인것이 궁금합니다. 하드에어 연구개발쪽에서 일하는 신입사원인데요.
오픈소스 하드웨어를 조사하라는 명령(?!)을 받고 조사하는중에,
부장님이주신 카테고리를보면
이름 / CPU / Vendor / Core /clock 등이있습니다...나머지는 이해가 되는데
cpu랑 core의 차이가 너무궁금합니다.. 데이타시트를 봐도 그냥 microprocessor 또는 processor 혹은
CPU 혹은 core로 나타나있는데 , CPU와 core의 차이가뭐고 어떻게 기술되어있는지궁금합니다.
예를들면 인텔 갈릴레오를 보면 cpu도 intel quark x1000이고 core도 intel quark x1000입니다 ㅠ-ㅠ

그리고 또한 라즈베리파이2 버전B를 예를들면 이름은 라즈베리파이2 버전B인데 왜 벤더는 브로드컴인지 긍금합니다.. 라즈베리파이2 버전2는 cpu는 bcm2836 이고, core는 코텍스 a7인데,

bcm2836은 칩을통합해서 보드전체를 부르는이름인가요? 그리고 그 보드에서 cpu가 이름이 코텍스 a7이라는건지 정말 햇갈립니다 ㅠㅠㅠㅠㅠ
Commented by 히언 at 2015/05/26 16:55
안녕하세요!

Core는 말 그대로, CPU의 Core Architecture가 무엇이냐 하는 것이고요, CPU는 그 Core를 채택한 CPU의 이름이에요.
http://recipes.egloos.com/4982160 Embedded Recipes 를 잘 읽어 보셨으면 무리가 없을 내용이고요.
그리고.. 벤더는 그 CPU를 만들어 파는 녀석들이 누구냐.. 이고요..
bcm2836 SoC는 MPU나 MCU정도의 컨셉이라고 보시면 됩니다.
http://recipes.egloos.com/4990377
전부다 강좌에 있는 내용이니깐 잘 읽어보시면 금방 이해되실 거에요.

화이팅.
Commented by soto at 2015/06/23 12:11
Core와 CPU의 차이점에 대한 내용은 시즌3에 108 코어(Core)와 시피유(CPU) 차이점이 뭘까요? 참고하셔도 됩니다.

코어와 엠시유는 사장님과 회사라고 할 수 있습니다. 한 회사는 많은 사람들로 구성되어 있습니다. 그 중에서 가장 중요한 사람이 바로 사장님이죠. 회사에 따라 사장님이 두 명 이상이기도 하죠.
여기서 사장님이 바로 코어라고 보면 되구요 회사가 엠시유라고 보시면 됩니다. 회사가 잘 운영되기 위해서는 가장 중요한 역할을 하는 사장님 말을 잘 들어야 되는 것처럼 엠시유가 잘 동작하기 위해서는 코어의 눈치를 잘 살피고 때에 따라서 열심히 일을 해야 하기도 합니다.
최근에는 하나의 엠시유에 두 개 이상의 코어가 들어있는 칩셋들이 있으며, 점점 증가하고 있는 추세랍니다. 그럼 앞에서 언급한 것처럼 사장님이 두 분이 되는 거죠. 사장님이 두 분이면 회사 업무 처리를 나누어서 할 수 있으니 효율적이겠죠. 어쨌든 한개의 코어보다는 빠르지 않을까요? ㅎㅎ
그럼 시피유(CPU)는 뭘까요?
시피유안에는 코어, 코프로세서, 엠엠유, 캐시 메모리 등으로 구성되어 있어요. 흔히 시피유 또는 프로세서라고 불리는데 만약 암코어가 들어 있으면 암프로세서라고 부르죠. 하나의 엠시유안에 코어가 두 개면 시피유가 두 개인 셈이죠.

암프로세서를 가지고 엠시유를 만드는 회사가 많이 있습니다.
대표적으로 삼성(Samsung), 티아이(TI), 에스티(ST), 컬컴(Qualcomm) 등이 있습니다. 일반적으로 SoC(System on Chip)를 만드는 업체라고 합니다.
....
Commented by 엔더 at 2015/06/16 16:55
안녕하세요, 혹시 수정발진회로 해석을 완전 초보가 봐도
잘 알수 있는 설명이 있는 책이나 강좌가 있는 곳을
알수가 있을까요,, 수학이나 전문용어로 도배된 곳 말구요
ㅜㅠ 시중에 책들도 다 찾아봣는데 알수 있는게 없더라구요..
Commented by 히언 at 2015/06/17 00:24
제 강좌를 잘 보시면 PLL이 있는데
http://recipes.egloos.com/5139503
도움이 되실까 모르겠네요.
Commented by 어쩌다보니 얼음정령 at 2015/06/17 22:34
안녕하세요^^
현재는 임베디드 시스템 개발자의 꿈을 가지고 공부중인 완전 쌩초짜입니다.
여기를 블로그라고 해야하나요?? 아무튼 시즌1,2,3을 보고있는데 정말 유익하고 가려운 곳을 긁어주셔서 정말 많은 도움이 됩니다!!
시즌1,3은 책으로 나온걸로 알고있습니다. 책의 내용이 블로그에 있는 내용이 그대로 책에 있는건가요?
목차를 보면 약간 내용이 다른거 같아서 구매를 할지 말지 고민중입니다...
시즌3의 경우엔 블로그에서 아직 링크 안걸리는 부분도 있어서 목차로만 비교해봤는데 책의 내용이 블로그에 있는 것과 동일한건지 궁금합니다.
Commented by 히언 at 2015/06/18 11:41
안녕하세요, 임베디드 월드에 오신 것을 환영합니다!
시즌 1은 책과 거의 비슷한데 마지막 챕터는 책에만 있고요
시즌 3의 경우에는 내용은 비슷한데 구성이 조금 달라요!
좋은 임베디드 개발자가 되시길 바래요!
Commented by 윈드 at 2015/07/09 22:30
좋은 책 써주셔서 잘 보고 있습니다.
책을 보던 중에 p. 419~20있던 예제가 잘 이해가 안 가서 질문드립니다.
혹시 설명하신 부분이 id를 읽어오는 코드를 NOR에서 실행하면 문제가 되기 때문에, 이 역할을 하는 코드를 메모리 상에 OP Code로 올리고, 이를 실행한다는 의미인지 궁금합니다.

즐거운 하루 되세요.,
Commented by 히언 at 2015/07/13 11:50
안녕하세요~! 네, 맞습니다. NOR에서 실행하면 NOR는 ID를 돌려주는 상태가 되어버려서 어디를 읽어도 ID를 돌려줘요. 그러니까 NOR에서 실행하게 되면 Undefined Exception을 마구마구 만들게 돼요!
Commented by 넌나 at 2015/07/28 15:27
안녕하세요. 좋은글 정말 잘 읽고있는데요.
가끔 그림이 엑스박스로 뜨는게 있더라고요..
저만 그런건지는 모르겠지만,,
혹시 해결법 아시나요? 저만그런건가요?..
Commented by 히언 at 2015/07/28 17:42
안녕하세요~ 어떤 그림이 그런지 확실하게 알려주실 수 있을까요!!!? 테스트 해 볼게요!!!
Commented by 궁금 at 2015/08/13 14:27
혹시 시즌3에 마지막 부분은 글이 안올라와잇는데
시즌3책(Embedded Sketches)사면 그부분이 포함되어있나요?
책의 목차를 보니까 6장7장이 이글루에 올라와있는 6장7장과 다르더라구요ㅜㅜ
6장 암프로세서서 아나토미
7장 임베디드 시스템 전문가 되기
이걸보고싶어서요 ㅎ
Commented by 히언 at 2015/08/13 17:42
Soto니임~? 답변해 주세요~
Commented by soto at 2015/10/16 21:04
안녕하세요.
.책에는 6,7장 내용이 모두 포함되어 있습니다.
Commented by 두얼굴의 돌고래 at 2015/08/17 12:18
문과 출신이라 수학과 신호같은 내용은 완전히 포기해버려서

전공임에도 불구하고 책 내용이 잘 이해가 되지 않아요.. 레시피와 스케치 두권의 책을 가지고 있는데

레피시부터 먼저 보는게 순서에 맞는건가요?
Commented by 히언 at 2015/08/17 14:22
안녕하세요~

레시피와 스케치는 전혀 다른 책이에요! 시리즈가 아니에요!
레시피는 제가 한 것이고, 스케치는 소토라는 분이 하신 거에요.
순서는 음... 보고 싶으신 것 먼저 보심 될 것 같은데.. 저라면 레시피 먼저.. 어떨까요!
Commented by 두얼굴의 돌고래 at 2015/08/20 23:30
타겟보드 선정하는 것이 쉽지 않네요..

실습하면서 해보고 싶은데

유닉스 리눅스 프로그래밍 필수 유틸리티, 리눅스 시스템 프로그래밍, ARM ISA 위주로 공부를 했었는데

vmware에 리눅스 설치해놓고 돌려보고 보드에 리눅스를 포팅해보고 싶다 정도로 졸업생 신분이 되어 버렸습니다..

소프트웨어학과 특성상 하드웨어에 관한 내용은 배운적이 없어서 책보면서 천천히 따라가고 힘들면 소프트웨어쪽으로 넘어가면

한번쯤은 학습했던 내용이라 조금 수월(?)하게 읽으면서 새롭게 개념을 정리하고 있는데

실무에 투입되기 위해서 보드에 실습을 해보고 싶은데

어떤 보드가 가장 일반적이면서 정보를 찾기 쉬울지 추천 해주실 수 있을까요? ..
Commented by 히언 at 2015/08/21 18:05
어차피 리눅스에 정통하시면 라즈베리파이는 어떠신가요?
보드는 범용성이 별로 없어서 추천하고 싶진 않고,
라즈베리파이로 장난해 보시는 것이 어떨까 생각해요!
Commented by moonw88 at 2015/08/28 12:51
지금 임베디드 솔루션 회사에 신입으로 입사를 해서 아는게 하나도 없습니다. ㅠㅠ
SERDES에 대해서 공부하고 싶은데 어떤 책를 보고 참고 하면 될까요?
답변 부탁드려요 ~
Commented by 히언 at 2015/08/28 14:43
글쎄요? 시리얼라이저, 디시리얼라이저만 다룬 책이 있을까요?
임베디드를 하나도 모르시면 처음부터 차근차근히 공부하시는 것을 추천드려요!
Commented by 123456Rlc at 2015/09/08 20:59
주인장님 진짜 사랑합니다 본인은 갓 제대한 공대 복학생인데요 주인장님 글때문에 전자회로 관련된 기초지식을 쉽게 얻을수 있었습니다 진심으로 사랑합니다 아는 분이였음 밥이라도 사드렸을듯 싶네요 ㅋㅋ
Commented by 히언 at 2015/09/08 23:49
안녕하세요, 예쁘게 봐 주셔서 정말 감사합니다. 자주자주 뵈었으면 좋겠어요!
Commented by 루링 at 2015/09/22 13:00
똑똑. 살아계시나요~~~~~~~ㅋㅋ
Commented by 히언 at 2015/09/22 19:22
홋!
Commented by soto at 2015/10/16 21:01
오랜만이네요.
잘 지내시죠? ㅎㅎ
Commented by 달곰순이 at 2015/10/02 16:53
안녕하세요~ 항상 글 잘 보고 있습니다.
Stack에 대해 공부하다가 궁금한 점이 생겨서 글 남깁니다.
Stack이 Full Descending, Empty Descending 등 구분 된다고 글을 읽었는데요.
그에 따라 명령어가 달라지자나요.
저는 코드는 작성할 때 C로만 작성하는데....
컴파일 하고 어셈으로 확인하게 될 때, 보이는 어셈 코드에서....
Stack을 접근해야 하는 명령어는 프로세서에 해당하는 Stack 동작을 컴파일러가 선택하나요?
Full Descendig 동작을 하는 프로세서인지 어떻게 알고 변환되는지 궁금해서요.
컴파일 할 때, 사용하는 코어 선택에 따라 컴파일이 자동으로 되는건지...ㅋㅋ
너무 어렵네요^^
Commented by 히언 at 2015/10/03 18:56
안녕하세요!

AAPCS에 의해 ARM의 경우에는 Full descending stack으로 컴파일 해요!!
The Procedure Call Standard for the ARM Architecture (AAPCS), and ARM and Thumb C and C++ compilers always use a full descending stack.
Reference는 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0473c/Cacbgchh.html
여기이고요!!
비슷한 의문을 가졌던 분이 있어요!!
http://stackoverflow.com/questions/906443/can-i-configure-a-arm-processor-for-ascending-stack-growth-direction
히히
Commented by soto at 2015/10/16 21:24
안녕하세요.
stack에 대해 많이 궁금하신군요. ^^

일반적으로 C언어로 프로그램을 만들고, 컴파일을 하면 오브젝트 파일이 생성됩니다.

main.c -> 컴파일 -> main.o

main.o 파일을 조금 더 자세히 분석을 해 보면 크게 4개의 영역으로 구성되어 있습니다.

main.o
+--------+
| stack | (high address)
| heap |
| data |
| text | (low address)
+--------+

이 4개의 영역을 각각 섹션이라고 부릅니다.

여기서 stack 섹션은 c언어로 개발된 소스 코드 중에 주로 local 변수들이 저장되는 곳입니다.

즉, c언어로 프로그램을 개발하면
프로그램을 동작시키는 코드(예, for loop, while, 기타 등등)는 text영역에 저장되구요
static, global 변수는 data영역에 저장됩니다.
heap은 ...? 아시죠. ㅋㅋ
따라서 stack영역에 저장되는 것은 local 변수들로 이루어져 있습니다.

질문을 주신 내용을 정리하면,
컴파일할 때 코어 선택에 따라 full desending 이와 같은 형태가 생성되기 보다는
c 컴파일러(x86, ARM, MIPS, PowerPC 등)는 무조건 local 변수를 stack에 저장 한다고 보시면 되고요,
코어에 따라 생성되는 어셈코드가 다르다고 보시면 됩니다.
이때 어셈코드 생성하는 규칙은 히언님이 말씀 하신 내용이구요.

보다 자세한 내용을 알고 싶으시면 아래의 링크를 참조하세요.

씨 언어에서 변수는 어디에 저장 되나요?
http://recipes.egloos.com/5336381

도움이 되시길 바라며...즐거운 하루되세요.
Commented by 안단테 at 2015/10/07 20:17
안녕하세요!
EMBEDDED RECIPES 3쇄로 공부하고 있습니다.
출판사 홈페이지를 살펴보니 5쇄까지 나온것 같은데
추가된 내용이나 수정된 내용이 있나요?
정오표에 관한 내용은 찾을 수가 없네요.
출판사 홈페이지에서 11년도 글에 언급되었던 세컨드 에디션은
출판이 안된건지 궁금합니다~
책 잘 보고 있습니다. 감사합니다.
Commented by 임진철 at 2015/11/03 20:47
궁금한 것이 있어 문의드립니다!

저희가 초소형위성 소프트웨어개발을 하는데 (저는 소프트웨어 전공자는 아닙니다.ㅜ)

RTOS기반으로 코딩을 짜고있습니다.

이때 시간을 재는 것을 틱을 이용해서 하고 있습니다.

그냥 시간만재면 1분이 60초로 딱 맞춰지는데

다른 동작, 테스크들을 같이 실행하면 65초로 측정이됩니다.

왜그런지 혹시 알 수 있을까요?ㅜ
Commented by 히언 at 2015/11/05 16:15
안녕하세요!

틱이면 하드웨어 틱을 이용하실 텐데,
그러면 60초로 안맞춰지는 것이 이상한데요!
혹시 하드웨어 틱 isr이 아니라,
thread type의 tick을 사용하시는 것은 아닌지요!?
Commented by Shumin at 2015/11/05 13:23
주인장님 저 궁금한게 있어서 문의드립니다!

여기에 회로도나 Block Diagram을 그리실 때 어떤 툴을 사용하시나요?
그림체가 너무 이뻐서 저도 사용하고 싶어서 이렇게 문의드립니다!
알려주시면 정말 감사하겠습니다.
Commented by 히언 at 2015/11/05 16:15
안녕하세요!

회로도나 Block Diagram은 제 손으로..... 그렸어요. (ㅠㅠ)
Commented by 이동석 at 2015/11/11 11:45
안녕하세요. 개인적으로 문의드리고 싶은 부분이 있어서 게시판에 비공개 덧글로 남깁니다.

책을 한권 만들어주실 수 있으실까요? 라는 질문입니다.

저는 현재 Nuvoton CortexM0 대리점에서 엔지니어로 근무하고 있습니다.
저희가 판매하고 있는 칩이 CortexM0 아시아 1위의 판매실적에도 불구하고, 국내에는 소개가 덜되었습니다.
특히 제대로 된 책이 없어서 고민입니다. 때문에 히언님께서 책을 만들어 주실 의향이 있으시다면
아래의 내용에 도움을 드릴 수 있을것 같습니다.

1. 개발 키트 제작을 지원드릴 수 있습니다.
(프로그래머, 디버거)를 on-board 할 수 있도록 지원드릴 수 있습니다.

2. 필요하신 자료 수집을 도와드릴 수 있습니다.
손발처럼 착착 움직이지는 못하더라도, 잘 팔로우업 할 수 있을것 같습니다.
어쩌다보니 등떠밀려서 지금까지 약 2회에 걸쳐서 고객분들 대상으로 본사 주관의 공개강의를 했습니다만,
지식의 폭이 깊지 않아 제가 강의를 하는 부분에 대한 회의를 많이 느낍니다.


3. 저서 이후에 공개 강의가 가능하실지..??
강의료는 하루에 50만원 입니다만, 하루 풀타임으로 시간을 내야되서요..

Ps. 원고료는 솔찍히 장담드리기 힘든 상황입니다.
금액의 수준도 모를 뿐 더러 본사 차원에서 나서야 될 일이기 때문입니다.

확인 되시면 이메일 부탁 드립니다.

strChrislee@gmail.com 입니다.

좋은 하루 되시기 바랍니다.
Commented by 11 at 2015/11/12 16:19
정말 힘들었는데 여기를 찾은후 많은걸 배웠습니다. 감사합니다.

그래도 아직 해결이안되는부분이 있는데

쉐도우부분설명해주신게 이해가 전혀가지를 않습니다..조금만더 친절하게 알려주실수 없을까요??
Commented by 히언 at 2015/11/12 20:57
"실은 Shadow는 backup과 같은 의미에요."
http://recipes.egloos.com/5118531

이것 보다 더 자세하게... 라면.... 무엇이 이해가 안되는지 질문을 해 주시는 것이 나을 것 같은데요.
무엇을 이해 못하셨는지가 파악이 안되니까요. ^^
Commented by 11 at 2015/11/20 21:44
애매한게 결론적으로는 보다 CPU의 성능을 향상시키는 것일태니까
특이값이 들어올경우 하던것을 멈추고 그값을 저장한후 그특이값을 처리해준후에 다시 레지스터에 있는값을 불러와서 처리한다. 이종도로 생각하고있는데
이걸꼭 쉐도우 레지스터라는 이름까지붙여가면서 할것이란 생각이 들지않습니다.
분명 A A1 A2 같이 쉐도우 레지스터를 만들어두면 이레지스터들을 빠르게 스왑해가며 사용하는것같은데
B B1 B2


A+B=c
C+D=E
같이 데이터 해저드가 일어날때 이를 쉐도우레지스터를 활용할방법은 없는걸까요?
Commented by 히언 at 2015/11/22 00:32
링크안에 보시면 "Register중에 쓰기만 가능하고 읽기가 불가능한 Register들이 있다고 했죠. 그런 녀석들을 전역변수에 backup을 해 놓고, 언제라도 그 값을 읽어 볼 수 있도록 해주는 개념이지요. " 라는 거인데요.. 뭔가 다르게 이해하신 것 같은데요...
Commented by soto at 2015/12/16 17:59
안녕하세요.
데이터 해저드는 주로 cache memory에서 발생하는 경우입니다. WAW, RAW와 같은 경우를 대비해서 ARM core내부에 rename register 따로 존재해서 이곳에서 해결합니다. 데이타 해저는 아시다시피 Tomasulo algorithm(out-of-order execution)을 통해 해결되거나 pipeline bubble(NOP 코드)를 넣어서 해결하기도 하지요. ㅎㅎ
Commented by 효차 at 2015/12/08 11:23
형님 안녕하세요? 전기전자공학 공부하고있는 학생입니다.
웹으로 답답함을 느껴 레시피 책 구매해서 잘 보고있습니다.
제가 직접 만들어 보고 싶은 장치중에 와이파이 기계를 직접 만들어 보고 싶습니다.
파워와 랜선을 꽂아서 구동시키면 제 핸드폰으로 와이파이 신호를 잡아 임베디드 홈페이지까지 접속을 하고싶은데요.
이럴 경우 와이파이 라우터를 만들기 위해 어떠한 공부를 해야하고 어떤 자료를 참고하거나 책을 보거나 사이트를 방문하거나 해보는게 도움이 될가요?
사실 와이파이 라우터라는 표현이 맞는지 개념이 어떤지도 확실히 모르고 있습니다.
도움을 주세요!!
Commented by 히언 at 2015/12/08 14:50
아래 링크에서 프로젝트 하나 골라서, 실제로 구현해 보시고
https://en.wikipedia.org/wiki/List_of_router_firmware_projects
전체적으로 라우터가 어떻게 동작하는지 감을 익히신 후,
실제 임베디드 시스템을 구성하는 도전을 해보시는 것이 어떤가 싶은데요
Commented by 독립적인 펭귄 at 2015/12/09 22:40
형님, 덕분에 제가 위키피디아에 가서 쭈욱 살펴보았습니다.
그런데 말입니다.
프로젝트를 골라서 실제 구현하라는게 무슨 말씀이신지 잘 모르겠습니다.
조금 더 알려주시면 안될까요?
Commented by 히언 at 2015/12/10 14:06
http://raspberrypihq.com/how-to-turn-a-raspberry-pi-into-a-wifi-router/
이정도 프로젝트면 하루 정도면 될 것 같은데요.. 실제 동작은 라스베리파이에서 해 보시고,
이외 오픈소스들을 직접 올려보시고, 스터디 해 보시는 것은 어떤가 생각하고 있습니다.
Commented by 세봉아 at 2015/12/10 11:13
안녕하세요

embedded recipes 도서를
블로그에서만 구입 가능한가요?

구매전 직접 읽어 보고 사려는데
대형서점에는 안 보여서요
Commented by 히언 at 2021/06/27 02:40
죄송합니다. ^^
임베디드 레세피는
블로그에 연결되어 있는
에서만 구매가 가능합니다.

더 쉽게 구매가능하게 하지 못해서
아쉽습니다!
Commented by 익명 at 2015/12/24 15:02
안녕하세요. 시스템에 관심이 많은 사람입니다.
현재 일상에서 많이 쓰이는 데스크탑 인텔64비트 cpu에 윈7을 많이 사용하는거 같습니다.
그래서 Intel메뉴얼을 볼려는데 일반가정 cpu아키텍쳐(인텔64)가 인텔에서 제공하는 systemprogramming 메뉴얼에서 말하는 인텔64 IA-32 아키텍쳐와 같은지 궁금하네요. 인텔이 64비트로 넘어오면서 ia-64와는 호환성을 포기하고 amd64하고 합쳤다고도 해서 amd64메뉴얼을 읽어야하는지 아니면 인텔메뉴얼에 다써잇느지 도대체 어떤걸 공부해야 제가 가지고있는 cpu(일반 데탑cpu) 에 대해서 공부할 수 있는지 헷갈리네요.

조언부탁드립니다. 개인적으로 저는 윈도우 빠입니다.,
Commented by 히언 at 2015/12/24 17:23
안녕하세요,
여기에 질문하실 내용은 아닌 것 같긴한데... 여튼..
질문이 좀 이상한데요,

인텔64 ia-32에 관심있으시면 그냥 기존 인텔 매뉴얼 보시고, (뭐, 대부분의 프로세서에 해당)
ia-64면 Intel® Itanium® processor 매뉴얼 보시면 될 것 같은데요.
term에 대한 definition은 아래 링크에 있습니다.
https://software.intel.com/en-us/articles/ia-32-intelr-64-ia-64-architecture-mean
Commented by 이은희 at 2016/01/13 21:57
안녕하세요 임베디드를 공부하고 있는 대학생 입니다. 검색을 하다가 이 사이트를 알게 되었습니다. 강의를 들어보려고 하는데 강의맵이 여러개 있더군요.
강의실전체맵3가 최신판이라는 건가요?? 아니면 1부터 2,3으로 점점 내용이 심화되는 것인가요?
Commented by 히언 at 2016/01/14 10:24
안녕하세요~!

최신판이나, 심화는 아니고요~
이곳은 히언이 운영하는 곳이고,
시즌1은 히언의 강좌
시즌2는 좋은자료 링크
시즌3는 소토라는 분의 강좌에요~

마음에 드시는 것 보시면 돼요~~~ ^^
Commented by 구망창 at 2016/01/19 16:17
우연히 들어오게 되었는데 정말 유익하네요 ^^
재능기부에 정말 감사드리며 공부하는데 참고할께요~
들를때 마다 응원 메세지 날려요 >_<)/~♡
Commented by 히언 at 2016/01/20 01:06
네~ 하트 감사합니다~~
Commented by 풀빵 at 2016/03/07 14:22
안녕하세요~
임베디드 강좌를 예전부터 블로그에서만 보다가 이번에 결심하고 책으로 지를려고 할 찰나에..
5쇄 품절이 되었더군요...ㅠㅠ
6쇄 나올 동안 기다려야겠습니다~^^
Commented by 히언 at 2016/03/07 18:45
아이고,
감사합니다! ㅠㅠ
Commented by 수궁가 at 2016/03/12 20:45
안녕하세요.
책 살려고 했는데 품절 ;;
6쇄는 언제쯤 예상하고 계시나요?
Commented by 히언 at 2016/03/12 22:45
아이고,

다음 주 월요일 부터 예약 판매를 시작한다고 합니다. ㅠㅠ.
아마도 4월 첫째주에 배송이 시작된다는 것 같아요!

감사합니다!!!
Commented by 성격급한 아이스크림 at 2016/03/23 11:14
책 p152
"Word 4개씩이면 32bit ARM에서는4byte*4=16byte= 0x10byte고요,0x30 보다 크거나 같고, 0x40보다 작은 size=2> 0x30~0x40의 범위가 되겠네요."

0x30 보다 크거나 같고, 0x40보다 작은 size 이게 무슨 말인지 잘 이해가 안갑니다..
1word가 4바이트니까 WRAP4면 16byte씩 R/W Burst한다는소리 같은데 범위 이야기는 왜 나오는건가요 ㅜㅜ

이것을 이해 못하니까 p 153에서
"그리고, Word 단위의 Burst라면 Address의 A[1:0]=00 이어야 하는 건 아시겠지요? 마찬가지로 half word (2byte)라면 A[0] = 0 이어야겠죠. A[1:0] = 10 이라면 4byte align 아니니까, burst 안되겠죠?"
이쪽도 잘 이해가 되지 않습니다 ㅜㅜ
4바이트 burst니까 0부터 시작해야 된다는 뜻인가요.
Commented by 히언 at 2016/03/23 13:13
암.... 이 말은 그 다음에 나오는 그림에 대한 설명인데요.. 좀 급작스럽게 설명이 널뛰어 버렸네요 ㅠㅠ. 4byte가 1word이고요, 4 word씩 burst니까, 0x10씩 burst로 처리할 수 있다는 말이고요! 그 그림에서 보면 0x30보다 크고 0x40보다 작음 으로 처리되어야 되니까, 0x40으로 안가고 다시 돌아온다는 얘기에요. 많이 헷갈리는 설명이네요. 그리고, 두번째는 말씀하신 말이 맞아요! 4byte burst니까 0부터 시작해야 한다는 의미에요! 설명을 더 손봐야하겠어요!! ㅠㅠㅠㅠ
Commented by 김현승 at 2016/03/28 15:16
안녕하세요

주인장님의 임베디드시스템 강의를 너무 감명깊게 읽고 배우고 있는 사람입니다.

이번에 책을 구매하려고 하는데 구매를 할수가없네요. 블로그내에 링크도 깨져서 나오구요.

책을 구매할수 있는 방법은 없나요?
Commented by 히언 at 2016/03/29 12:05
안녕하세요!!

링크의 출판사에서 구매할 수 있는데, 서버 이전중인가봐요!!
확인해서 알려드릴게요!

update : 서버이전이 완료되었나봐요!!!
http://www.cornerbook.co.kr/shop/goods/goods_view.php?goodsno=186785431&category=
Commented by 성격급한 아이스크림 at 2016/03/31 11:00
히언님 165p에 그림에서 (b)가 *.scl로 가있어야 되는거 아닌지요?
그리고 막상 공유 Objectfile에 대한 설명이 빠져있는거 같아요.

책읽다보면 잘못된게 은근히 보이는데 혹시 이런거 정리해놓은게 있는지요?
블로그 자료가 업데이트 되는거 같진 않아서요.. 나중에 개정본을 내실 생각이신지..
Commented by 진호 at 2016/03/31 20:40
와, 이런 곳이 있는줄 이제 알았네요.
짧게 보고 많이 배워 갑니다. 자주 들러 조금씩 보고 갈게요.
Commented by 김물리 at 2016/04/13 02:32
안녕하세요! 저 또한 공학에 오래 종사한 사람입니다. Embedded recipe와 비슷하게, 쉽게 설명된 한글 책을 쓰는 것이 제 꿈 중 하나인데요, 혹시 책을 쓸 때 어떤 프로그램을 사용했는데 여쭐 수 있을까요? word로 작성하면 되는 것인지.. pdf로 만들어야하는지.. 시간 나실 때 조언 부탁드립니다. 감사합니다!
Commented by 쭌d at 2016/04/14 13:31
책 내용 관련 질문은 어디에 하나요?
Commented by 임준형 at 2016/05/08 22:42
안녕하세요 임베디드에 이제 막 입문한 학생입니다.
과가 컴퓨터학과인데 임베디드 쪽 취업에 관심을 두고있습니다.

DSP나 FPGA 같은 실무에서 좋아하는 분야를 공부해서 빨리 취직하고싶은데요..ㅠㅠ
어떻게 시작해야할지 막막해서 여쭤봅니다 ㅠㅠ
작년에 STM32 영상처리보드로 CAN통신이나 모터제어를 간단히 하긴했는데 이건 아무도 안봐주더라구요 ㅠㅠ
DSP나 FPGA 한글 서적도 없고 강의나 보드는 너무 비싸서 아직 살 엄두가 안납니다.
고수님의 의견과 조언을 듣고 방향을 정하고싶은데요.. DSP 혹은 FPGA를 공부할 때 어디서부터 하는게 좋을까요?
Commented by 김관영 at 2016/06/22 14:51
안녕하세요 히언님.
예전에 struct와 typedef 그리고 PACKED에 관한 글들과
그에 대한 덧글들을 보고 align이 이해가 됐었는데요...
그 글들을 다시 보고 싶은데 Q&A 갯수에 제한이 있는 것 같네요...
혹시 그에 대한 덧글들을 다시 볼 수 있을가요?
Commented by 김관영 at 2016/06/22 15:05
아... 혹시 다시 볼 수 없다면 아래 구조체를 좀 봐주세요.
변수명 없이 그냥 타입만 적었습니다.
32비트 시스템이구요...

typedef struct
{
double
double
MMP_LONG
MMP_USHORT
ANOTHER
MMP_UBYTE
MMP_UBYTE
MMP_UBYTE
MMP_UBYTE
}MYSTRUCT


typedef struct
{
MMP_UBYTE
MMP_UBYTE
MMP_UBYTE
MMP_UBYTE
MMP_UBYTE
MMP_UBYTE
}ANOTHER;

사이즈를 print로 찍어서 보니
ANOTHER가 6바이트가 나오네요...
그래서 MYSTRUCT는 32바이트로 나옵니다.
ANOTHER가 6바이트 일때 MYSTRUCT가 32바이트가 나온다는건 이해 할 수 있겠는데요...

ANOTHER가 6바이트가 나오는게 맞는건가요?
data align이 되면 8바이트가 나와야 하는거 아닌가요?
Commented by 히언 at 2016/06/22 17:48
안녕하세요,
http://recipes.egloos.com/5053405
여기가 그 글 링크에요! ㅠㅠㅠㅠ
Commented by 김관영 at 2016/06/22 19:09
감사합니다. 그런데...

"이 글에 관련해서는 길~다란 argue가 있었는데, 그 내용은 Q&A 게시판으로 옮겼습니다."

라고 하신 이 argue를 찾고 있어요...ㅠㅠㅠ
Commented by 히언 at 2016/08/14 19:43
그.. 글쎼요.... 죄송해요!!!!!
Commented by 나나 at 2016/08/13 21:25
저 너무궁금한데 어디에 문의를드려야할지 몰라서요ㅠㅠ
GPIO랑 DIO의 차이점은 뭔가요???
GPIO는 IO가 완전 분리된거라고 하셨는데
DIO도 그런가요?
Commented by 히언 at 2016/08/14 19:52
이 이런 것도 답이 될까요?
http://forum.falinux.com/zbxe/index.php?document_srl=398884&mid=question

사실... 제가 보기에는 차이점이 그다지... 있다고 생각하지는 않는데요...
그냥 있어보일려고 그렇게 보이는 것 같아요... ㅠㅠ
Commented by 김관영 at 2016/08/18 21:21
죄송하긴요!
괜찮습니다!
답글 달아주셔서 감사합니다!
Commented by ruring at 2016/10/24 17:20
잘계시나요!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Commented by 히언 at 2016/10/24 17:46
헤헷!!!!!
Commented by ruring at 2016/10/25 09:46
헤헷!!!!!
Commented by 히언 at 2016/10/25 11:05
우호이허우허오허어잉!!!!!!!
Commented by ruring at 2016/10/25 12:12
-0- 즐거운식사되세요 ㅎ
Commented by 히언 at 2016/10/26 00:27
네! 맛있는 야식 드세요! (헤헤)
Commented by ruring at 2016/10/31 09:20
즐거운 월요일되세요~
Commented by 히언 at 2016/11/01 12:28
네! 즐거운 화요일이에요!! 자주 들려주셔서 좋아요 ㅠㅠㅠ
Commented by ruring at 2016/11/02 17:38
음.. 오늘은 수요일이구요 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
Commented by 아탄 at 2016/11/02 21:40
안녕하세요 히언님 제가 임베디드 레시피를 읽은지 벌써 7년쯤? 된것 같은데 ㅎㅎ 그 후에 개정판도 새로 나왔더라구요 책 내용이 너무 좋아서 아직도 가끔 생각 안나는 부분이 있을때 책을 뒤적 거릴 정도로 제 favorite book입니다.
실무에서도 유용한 내용이 많이 있구요..
문의 드릴 사항이 하나 있어서 이렇게 덧글 남깁니다.
c++컴파일러에서 C언어로 작성된 내용을 사용할 때에 extern "C"를 C언어에 걸어주고 사용하잖아요.
이때 extern "C"로 되어 있는 함수 정의부는 mangling이 되지 않는데 실제 해당 함수를 사용하는 쪽은 C++로 작업이 되어 있을 텐데 어떻게 manliging을 하지 않을 수 있나요?

extern C function A(void) (A.h, A.c)

// --> B.cpp
#include "A.h"
void B()
{
A()
}
이와 같은 경우에요.
추정하기로 extern C에 대해서는 별도의 테이블을 관리하여 내부 사용되는 부분에서도 같은 함수에 대해 mapping을 해줄 것 같은데 단지 추정일 뿐이라서 정확한 매커니즘이 어떻게 될 것인지(즉 .cpp파일에서 mangling되지 않은 함수 호출 시 어떻게 mangling이 되지 않은 함수인지 아는가? 함수 선언부나 정의부에서는 extern 키워드로 묶여있어 알 수 있지만 호출 부에서는 어떻게 알지?) 가 궁금합니다.
답변 부탁 드립니다. 감사합니다.
Commented by 히언 at 2016/11/03 14:14
안녕하세요!
제가 뭔가 정리해 볼까 했는데
http://spikez.tistory.com/19
여기 보시면 extern C에 대한 naming을 잘 설명해 놓으신 분이 이미... (흡) 있으셔서
링크로 답변을 대신합니다!
많이 도움 되셨으면 좋겠어요!
Commented by ruring at 2016/11/08 14:48
또 일주일이 흘러 화요일입니다 '_____________'
Commented by 히언 at 2016/11/08 16:02
월요일이 지나버려 다행이에요 라고 중얼거리고 나니 너무 긍정적인 것 아닌가라고 자책했어요.
Commented by ruring at 2016/11/08 16:20
하..하..하... 자책할필요까지 있나요 ㅎ
Commented by ruring at 2016/11/11 10:13
불태우는 금요일 시작 ㅎ

불금과 주말 즐겁게!
Commented by 히언 at 2016/11/11 11:57
ㅎㅎㅎㅎㅎ 넵! 감사합니다!
Commented by ruring at 2016/11/18 13:26
또 금요일입니다. 중간중간 오긴하는데..
제 전용 게시판?!이 될꺼같아서 ㅋㅋㅋㅋ 오늘 남기고갑니다.

즐거운 주말되세요~~
Commented by 히언 at 2016/11/18 14:16
헤헤 불금되세요!! 저는 KAIST에 출장중이에요 ㅠㅠㅠㅠ
Commented by ruring at 2016/11/22 18:05
전 이사한다고 죽겠어요..

이제 출근 1시간 반걸려요 ㅜ_ㅜ 흙
Commented by 히언 at 2016/11/22 20:01
미녀 루링님!!! 모두에게 얼굴 보여준다고 생각하면 되죠 헤헿
Commented by at 2016/12/06 11:18
안녕하세요. 작성하신 글 유익하게 보고 있습니다.
시즌2의
Microprocessor 아뜰리에 (Atelier) - MCU을 파헤쳐 보자
SoC 개요 - 넌 머냐
ARM ASSEMBLY

위 두가지 링크에 문제가 있어 글 남깁니다 . 감사합니다.
Commented by ruring at 2016/12/16 09:10
2016년 2주남았어요 ㅋ_ㅋ 마무리 잘하세용!!!!!!!
Commented by 히언 at 2016/12/16 12:04
새해 복 많이받으세요!!!!
Commented by Mr Yu at 2016/12/22 08:41
많은 도움을 얻고 갑니다.
앞으로도 자주 이용을 하게 될것 같습니다.
가진 지식을 나눠주셔서 정말 감사합니다.
Commented by 히언 at 2016/12/22 09:28
자주 놀러오세요!
Commented by 디리리리리 at 2016/12/28 23:15
안녕하세요. 얼마전에 코너북에서 스케치 주문해서 아직 챕터1만 읽었습니다.
제가 사실은 고민이 있는데요.
현재 전공이 정보보호학과입니다. 17년에 4학년이 되구요.
그런데 이상하게 임베디드에 끌려서 지금 공부하는데요.
지금 공부하고 있는건 C언어부터 하고 있어요. 안쓴지 오래돼서 까먹어서 그만ㅠㅠ

그리고 계획은 C언어-> 자료구조-> C++(?) -> CPU동작법 -> 임베디드 C프로그래밍-> 임베디드OS분석->
임베디드 리눅스or윈도우 시스템구축-> 리눅스 디바이스 드라이버 까지 하려 합니다.

그리고 최종목표는 임베디드 개발/보안 하려고 합니다. 제가 보안쪽에만 치우쳐서 공부를 했었지만 위 같은 공부를 최소 1년 최대 1년6개월 잡고 있는데 히언님께서는 어떻게 생각하시는지 궁금합니다.

주변 제 인(人)라인은 보안관련, C#개발자, 웹개발자 밖에 없어서 이렇게 여쭤보려합니다.

답변 부탁드리겠습니다. 날씨 추운데 감기 조심하시고 새해복 많이 받으시길 바랍니다!

자주 와서 여쭤봐도 귀찮아하지 말아주세용...ㅠ^ㅠ
Commented by 가녀린 북극여우 at 2016/12/28 23:57
안녕하세요. 얼마전에 코너북에서 스케치 주문해서 아직 챕터1만 읽었습니다.
제가 사실은 고민이 있는데요.
현재 전공이 정보보호학과입니다. 17년에 4학년이 되구요.
그런데 이상하게 임베디드에 끌려서 지금 공부하는데요.
지금 공부하고 있는건 C언어부터 하고 있어요. 안쓴지 오래돼서 까먹어서 그만ㅠㅠ

그리고 계획은
C언어-> 자료구조-> C++(?) -> CPU동작법 ->임베디드 스케치 -> 임베디드 C프로그래밍->
임베디드 레시피-> 임베디드OS분석-> 임베디드 리눅스or윈도우 시스템구축 ->
리눅스 디바이스 드라이버 까지 하려 합니다.

그리고 최종목표는 임베디드 개발/보안 하려고 합니다. 제가 보안쪽에만 치우쳐서 공부를 했었지만 위 같은 공부를 최소 1년 최대 1년6개월 잡고 있는데 히언님께서는 어떻게 생각하시는지 궁금합니다.

주변 제 인(人)라인은 보안관련, C#개발자, 웹개발자 밖에 없어서 이렇게 여쭤보려합니다.

답변 부탁드리겠습니다. 날씨 추운데 감기 조심하시고 새해복 많이 받으시길 바랍니다!

자주 와서 여쭤봐도 귀찮아하지 말아주세용...ㅠ^ㅠ
Commented by 히언 at 2016/12/29 10:40
안녕하세요! 히언입니다!
스케치는 제가 쓴게 아니라서... 레시피를 보셨어야죠!!! 헤헤

1년 6개월이면 공부를 하는데 충분한 시간이라고 생각합니다.
제 사견으로는
임베디드 레시피 그냥 읽어봄 -> 뭘 모르는지 파악 -> C 및 자료구조/ CPU 구조/OS 만들기/리눅스드라이버 등으로 모르는 것을 보충 -> 임베디드레시피 다시 읽어봄 -> 뭘 모르는지 파악 -> C 및 자료구조/ CPU 구조/OS 만들기/리눅스드라이버로 다시 보충 -> 임베디드레시피 다시 읽어보 -> 뭘 모른지 파악 ->.... 으로 루프를 돌리시는 것이 좋을 것 같아요.

do {
임베디드 레시피 전체를 그냥 심심풀이로 읽어봄
뭘 모르는지 파악
그것을 보충 공부
} while (모르는 것들을 이해 못함?)

임베디드리눅스 구축 실습();

정도가 아닐까 생각합니다!

새해에도 복 많이 받으시고 화이팅 하세요!!

Commented by 가녀린 북극여우 at 2016/12/29 14:56
오오! 고맙습니다! 레시피는 미리 사뒀었습니다!ㅎㅎ그리고 스케치를 샀었어요!

히언님께서 올려주신글 스티커메모에 복붙해서 항상 새기면서 공부하겠습니다!

정말 너무 고맙습니다!! 좋은 하루되시고 새해복 많이 받으세용!
Commented by 히언 at 2016/12/29 17:40
네!! 가녀린 북극여우님의 행복한 한해가 되시길 언제나 기원하겠습니다!

화이팅!!
Commented by 바포메트 at 2017/01/01 15:26
안녕하세요! 히언님.
임베디드 입문자입니다. 제가 미들웨어쪽에 관심이 있는데요.
실제 개발할때는 어떤 종류의 수학이 필요한가요?
어떤사람은 필요하다 / 필요없다 하는데 잘 판단이 안섭니다.
그리고 레시피책 너무나도 좋습니다ㅠㅠ 잘 읽고 있어요!
혹시 필요할까 싶어서 중학수학책 사서 공부하는데 조언 부탁드립니다!

새해복 많이 받으십시오!
Commented by 히언 at 2017/01/01 16:00
안녕하세요! 바포메트님!

새해 복 많이 받으세요!

우선 말씀하신 수학은 사실 로직을 설계하실 떄는 집합, 명제 등이 주로 사용되고
퍼포먼스를 측정할 떄는 미적분이 많이 사용됩니다!

사실 우선적으로 소프트웨어를 잘 하려면
집합, 명제, 논리적 사고 요 세개가 제일 먼저 선행되어야 된다고 생각해요!

언제나 행운만이 깃들길 기대하겠습니다!
Commented by 별일없는 하프물범 at 2017/01/17 03:39
정렬에 대한 개념을 못잡겠습니다.
특히 AAPCS를 위한 8바이트 정렬을요..

처음에 정렬에 대해 공부할 때는 유효한 데이터를 지정한 정렬 크기에 맞게 배열하는 건 줄 알았습니다.
예를 들어 4바이트 정렬인데 3바이트, 2바이트의 데이터를 0x0000 주소부터 저장할 때, 3바이트 데이터는 0x0000부터 0x0002까지, 2바이트 데이터는 0x0003은 비워두고, 0x0004부터 0x0005까지..

그런데 ARM 어셈블리 코드에서 AAPCS를 위해 스택을 8바이트로 정렬하도록 지시하는데 디버깅을해보면 스택에 있는 데이터들이 8바이트로 정렬되지 않습니다. SP의 마지막 자리가 4가 되기도 하더라구요. 8바이트 정렬이면 SP의 마지막 자리가 0또는 8이되어야 하는것 아닌가요..?

제가 정렬에 대해 잘못 알고 있는건가요?
Commented by 히언 at 2017/01/19 00:48
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka4127.html
여기 보면 8byte면 말씀하신대로 되어야 하지만
컴파일 옵션에 따라 조금 다른 것 같아요!
Commented by 권쥐 at 2017/01/17 03:58
앤트리 포인트에 대한 질문입니다,,
앤트리 포인트는 AREA에서 제일 먼저 수행되어야할 위치를 가리킨다고 해서 매우 중요하고 필수적으로 지지해야하는 건줄 알았는데요. 코드를 작성해서 실제로 실험해보니 아무데나 작성해도 되고 경고가 뜰 때도 있고 안뜰 때도 있었습니다. 뜨더라도 이상 동작은 없었습니다.

그래서 구글링을 해봤는데 Cortex-M은 하드웨어적으로 앤트리 포인트를 0x00000004(Reset Handler)로 잡으니 신경쓸 필요가 없다.. 이런 내용을 본거 같네요. 만약 이게 정말이라면 앤트리 포인트는 왜 존재하는 건가요..? 다른 CPU에서는 필요한건가요..?
Commented by 히언 at 2017/01/19 00:35
책에서 보시면
Reset Handler에서 main까지 (Entry Point) 을 보시면 좀 감을 잡으실 것 같은데요... 헷
Commented by at 2017/01/17 11:02
안녕하세요 강의자료 잘 보고 있습니다. :) 보다가 궁금한 점이 생겨 질문 드립니다.

arm cortex-m4 보드를 이용하고 있고 baremetal 입니다. application / bootloader로 나뉘어 있는 구조에서 bootloader에서 application firmware를 검증하여 valid한 경우에만 booting 하는 기능을 구현하려 합니다.

다음 사항이 궁금합니다.
1. application firmware를 생성하여 flashing 하게 되면 보드가 working하는 중 flashing된 firmware 수정 가능성이 있는지? (악의적 공격 제외, RW 영역의 값 변경이라던지)
2. 1번 질문의 이유는 bootloader에서 app을 검증할 때, application FW에서 runtime에서 변경되지 않는 부분에 대해 signature를 생성하려 합니다. 언듯 생각 했을 땐 다음 두가지 방법이 있을 것 같은데 목적(변경되지 않는 부분)에 부합한게 어떤 것인지요?
- 그냥 생성된 firmware 전체에 대한 signature를 생성한다
- code section만 추출해서 signature 생성한다.
Commented by 히언 at 2017/01/19 00:32
안녕하세요!

악의적 공격제외라면 flashing된 firmware수정 가능성은 없다고 봐야 하지 않을까요? RO, RW 두개는 불변하니까, RO, RW를 대상으로 signature를 생성하면 될 것 같으데요. 바로 RO, RW자체가 firmware 전체니까 전체로 구워도 상관 없을 것 같다라는 개인적 의견이에요. 헤헤.
Commented by ruring at 2017/01/19 10:03
17일에 무슨일있었나요.. 질문이 전부 17일이네..

출근하는데 황사가.. 아니 미세먼지가.. 아니지 스모그가.. =-=..
뭐.. 그게뭐든 ..한치앞이안보이네요.

그냥 들려봤어요.ㅎ 늘건강하세요~
Commented by 히언 at 2017/01/20 00:47
아이고! 건강에 신경쓰세요!
Commented by 바포메트 at 2017/01/26 17:53
안녕하세요. 히언님!

저희 학교에 과목이 소프트웨어설계및분석 이라는 과목이 생겼는데요.
이 과목이 도움이 될지 안될지 모르겠어서 여쭤보러 왔습니다. :)

우선 시스템소프트웨어이구요. UML을 이용해서 시스템을 분석하구요.

큰 학습주제로는

시스템개요 및 개발과정

시스템분석의 중요성, 요구사항 분석, 시스템분석/설계문서

주조적분석의 원리 모형화 도구분석절차, 자료흐름도의 특징, 구성요성,작성원칙, 자료흐름도의 작성절차

자료흐름도의 단계화와 분할방법, 논리적 모형의구축, 자료사전의특성,표기법,작성원칙

소단위 명세서의 특성,구조적언어, 선후조건문,의사결정표 및 결정도,구조적 설계

객체지향 분석 및 설계, 기초통합 분석 및 설계 방법론, 데이터모형 구축방법, 관계형DB설계과정,

코드,파일 설계, 입출력설계, 소프트웨어품질관리, 시스템평가,

학습목표도 있지만 너무 많아서요..ㅠㅠ 교수님께서는 어려운 질문이라고 회피를 ;;ㅎㅎ;;

그래서 임베디드 선배님(?!)께 여쭤보러 왔습니다.

그리고 책 내용중에서도 질문이 있지만 두세번 더 읽어보고 여쭤볼게용!

좋은하루되세요! 고맙습니다!
Commented by 히언 at 2017/01/26 19:08
지.. 질문이 소프트웨어 설계 및 분석이라는 과목이 도움이 될지 물어보시는거죠?

이거는 Software Architecture에 관련된 실라버스고요,
제가 보기에는 한번쯤 들어볼 만 할 것 같아요!

하지만, 머리에는 잘 안남는... ㅎㅎㅎ

어쨌든 일종의 프로토콜이니까! 들어두시면 좋을 것 같아요!
헤헤
Commented by 바포메트 at 2017/01/26 19:48
답변감사합니다! 머리속에 안남으면 그냥 레시피 한번이라도 더 볼래요ㅎㅎ

새해복 많이 받으세용!
Commented by ruring at 2017/02/13 11:11
다시 덧글되네요 ㅋ_ㅋ
Commented by 히언 at 2017/02/13 14:24
헤헷!!! 루링씨 고맙습니다!!
Commented by 가녀린북극여우 at 2017/02/19 23:46
안녕하세요. 히언님!

레시피 한번 다 읽었습니다!
그런데 제가 나중에 임베디드 개발자로 취업을 하게 된다면 컴파일러를 제가 따로 커스텀(?), 만들거나 그래야 하나요?

그냥 arm에서 지원해주는거 쓰고 싶은데..`0`;;ㅋㅋㅋ


그래서 OS 만들기/ 드라이버 분석 및 만들기를 중점으로 공부하려해요.
컴파일러는 너무 두렵네요ㅠㅠ

은근 추운데 몸살 안걸리게 조심하세요!
항상 고맙습니다. :)
Commented by 히언 at 2017/02/20 00:20
안녕하세요! 가녀린북극여우님!

컴파일러를 왜 만들어요! 그냥 있는거 쓰시고요!

일단은 방향은 잘 잡으셨어요! 드라이버 먼저 만들어 보시고요!
그 다음에 OS를 만들어 보심 좋을 것 같아요!

언제나 화이팅하세요!

히언드림.
Commented by 검은하늘 at 2017/02/25 20:55
Embedded 공부하려고 인터넷을 뒤지다가 여기까지 왔습니다.

Embedded Recipes과 Embedded Sketches에 크게 차이가 있는지요?

좀 더 쉽게 설명하면... 둘 다 구매해야 할까요?
Commented by 히언 at 2017/02/26 00:19
어서오세요! 히언입니다!

Embedded Recipes는 시즌1 의 히언 강좌이고
Embedded Sketches는 시즌 3의 소토 강좌에요!

일단 강좌를 보시면서 결정하셔도 늦지 않아요!

즐거운 주말 보내세요!
Commented by 가녀린북극여우 at 2017/02/26 13:47
히언님 OS만들기 하고 디바이스 드라이버 만들기 할때 보통 리눅스/윈도우 있잖아요.

그래서 질문은 윈도우와 리눅스 중 어느걸로 시작하는게 비교적 쉬울까요?

그리고 도서관에 있는 디바이스드라이버 책들 몇권 있길래 빌려왔는데 숨이 턱턱 막히네요ㅠㅠ힝..ㅎㅎ

저런 소스들을 구글신께 여쭤봐도 만족할 만한 답변이 나오질 않아서 이렇게 또 남기네요!

여담으론 제가 개인적으로 윈도우를 넘넘 좋아해서 윈도우 임베디드에 관심이 많거든용ㅎㅎ

그럼 즐거운 일요일 되시고 건강 잘 챙기세요!

고맙습니다.!
Commented by 히언 at 2017/02/26 22:53
비교적 쉬운 것을 시작하고 싶으시다면
리눅스가 윈도우에 비해서 쉽습니다.만

디바이스 드라이버는 디바이스를 어떻게 컨트롤 할거냐 + OS의 프레임워크를 잘 다루느냐의 문제이기 때문에
좋아하는 것이 윈도우라면 윈도우로 시작하셔도 크게 다르지 않다고 생각합니다.

그럼, 모든 것에 행운이 깃들길 바라겠습니다~
Commented by 방랑자 at 2017/04/04 11:14
안녕하세요. 임베디드 스케치 책을 구매해서 보고있는 사람인데요.
이해가 되지 않는 부분이 있어서 이렇게 글을 남깁니다.
http://recipes.egloos.com/5280965
해당 링크에 낸드플래시에 대해서 설명이 되어있는데요.

낸드 플래시 erase를 할때 설명이

ALE에 페이지 정보는 어떻게 줘야 할까요? 낸드 플래시 데이타 시트를 보니 다음과 같은 그림이 있어서 살펴보니 낸드 플래시에 페이지 정보를 주기 위해서는 3번 명령.(1st Cycle ~ 3rd Cycle)이 필요하네요
페이지정보는 2nd, 3th Cycle에서 정해 진다고 하니 최종 지우기 동작은 명령어 2번, 페이지 정보 2번 해서 4번 동작을 하면 됩니다.

여기서 페이지 정보를 주기위해서는 3번의 명령이 필요한데 다음 라인에 페이지 정보 2번이라고 하는게 이해가 안가고요.

쓰기 동작에서는 아래와 같이 코드가 나오는데요
Data.Set &NFCMD %w 0x80 // 1st Bus Cycle
Data.Set &NFADDR %w &col // 1st Bus Cycle
Data.Set &NFADDR %w ((&row)&0xFF) // 2st Bus Cycle
Data.Set &NFADDR %w ((&row)>>8)&0xFF) // 3st Bus Cycle

data.copy 0x0++512 &NFDATA
Data.Set &NFCMD %w 0xD0 // 2st Bus Cycle

쓰기 동작 헥사값은 0x80 , 0x10 이라고 알고있는데 위에는 Data.Set &NFCMD %w 0x80 까지는 맞는데
Data.Set &NFCMD %w 0xD0 이라고 표기되어 있네요 .0x10이 맞는거 아닌가요 ?

그리고 쓰기동작에서 지우기와 마찬가지로 명령어 2번에 페이지 정보 3번이 필요해요. 라고 나오는데
지우기는 아까 3번이라고 말했지만 2번필요하다고해서 해당 문구가 헷갈리네요.

답변부탁드립니다.


Commented by 히언 at 2017/04/05 00:47
아이고.. 쏘토님... 답변 좀...
Commented by 방랑자 at 2017/04/11 16:23
안녕하세요. 또 질문남깁니다 ㅎ

http://recipes.egloos.com/5336381

해당 링크 마지막에 auto 변수 기억 클래스가 설명에는 Stack에 저장된다고 했는데 마지막 표에는 Stack과 data영역으로 써있네요..
제가 따로 검색해봐도 auto는 stack에만 저장하는걸로 나오는데요.

어느게 맞는건가요 ?
Commented by 히언 at 2017/04/11 18:37
아이고.. 쏘토님... 답변 좀...
Commented by 히언 at 2017/04/12 01:13
아 제가 보니까 이거는 쏘토님 대신에 제가...
auto가 data 영역에 저장되는 경우는요
init 값이 있을 때에요. 단, 막상 사용될 떄는 stack에 저장돼요.
Commented by 방랑자 at 2017/04/12 10:07
아 그말은
int i =3; 이런식으로 선언된 변수일 경우 data 영역에 저장된다는 말인가요?

근데 예제에 보면 stack에 저장된다고 설명이 되어있어서.. 헷갈려서요.

자세히 설명좀 부탁드립니다 ㅠㅠ
Commented by 히언 at 2017/04/12 10:46
말 그대로 사용되기 전 초기값은 data영역에 저장되고,
그 변수가 사용될 때는 stack에 넣는다에요!
Commented by 방랑자 at 2017/04/12 17:15
아 예를들어 초기값을 3이라고 한다면 이 3이 data영역에 저장되었다가 이 3이라는 값이 사용될때는 stack에 들어간다는거군요
감사합니다.ㅎㅎ
Commented by 네루미 at 2017/04/26 10:42
도움없이 처음시작하는 임베디드 개발자들에게 가장 힘든것은 아무래도 개발환경구성이 아닐까싶습니다.
거기서도 리눅스개발환경을 만드는것은 정말 쉽지가않네요..
일단 인터넷에 자료가별로없어서 문제입니다. 따라한다고해도 잘안되고요
개발환경부터 FPGA사용과 암바구성 ADS를사용하여 다른 avr이나 아두이노킷트들을 연동하여 동작시켜보는 그런걸 다루어보았으면합니다
후배의 앞길에 발자국하나 남겨주시기를 부탁드립니다
Commented by 네루미 at 2017/04/26 10:43
안된다면 책이라도 추천좀 부탁드립니다 ㅠ
Commented by 히언 at 2017/04/26 13:59
글쎄요.. ㅎㅎ 그렇게 방대한 것을 다루는 것이 있을까요.
일단 크로스컴파일러로 암보드에 올려보는 것 부터 해 보시고,
FPGA는 또 다른 영역이니까, 그쪽거 따로보셔야 할 것 같아요.
연동이라는 것은 암보드와 서로 통신하게 한다는 말씀인가요?
그것도 인터페이스가 몇개 있는데 그거 따로 보셔야 할 것 같아요.

영역별로 다 달라서 전체를 다루는 책은 못봤어요. ㅠㅠ
Commented by 네루미 at 2017/04/27 12:30
제가 배움이 짧아 정확하게 설명이 어렵지만
FPGA부트로더에서 UART를 통해 avr카메라나 아두이노카메라를 사용해볼려고합니다.
물론 통신으로 해도괜찮을것같습니다.
그후에 verilog hdl 언어를 사용한 FPGA모듈과 c언어로 코딩된 AVR모듈을 크로스컴파일러를 통해 연동하여 구동시키는것이 목적입니다.

저같이 혼자하는 초보자에게 프로그램 선정과 기본구성 그리고 상황에 따라 필요한 암바,크로스컴파일러,리눅스 등은 시작이 너무나도 힘듭니다.. ㅠㅠ
저의경우 부트로더,디바이스드라이버,커널수정 -> FPGA킷트 카메라 구동에서 막힌후
몇일째 이리저리 리눅스 관련자료를 찾아 버츄얼박스 우분트를깔아 명령어들을 그대로 따라해보았으나 진전이 전혀없이 헤매고있습니다..


임베디드레시피를 보고 저도 언젠가 이런책을 써서 노력하는사람들에게 도움을 주고싶다 생각하였습니다.
물론 이걸 다 배울수는없지만 간단하게 환경구성을 목적으로 조금씩 맛을 볼수있을것이라 확신합니다
그리고 그런책을 쓰는것은 대한민국에서 히언님뿐이라고 생각합니다.
Commented by 히언 at 2017/04/28 11:45
개인적인 생각으로는
라스베리파이나, 좋은 암보드 하나 선정 하셔서,
거기에 리눅스 올리시고, uart driver 공부하셔서 컨트롤 하셔서 avr이나 아두이노 카메라 연동부터 해 보시면 어떨까요.
거기에 FPGA 모듈이 왜 필요한지는 모르겠는데, 일단
어디든 리눅스를 먼저 올려보시고, 다음 단계로 넘어가는 것이 좋을 것 같습니다. ㅠㅠ

라스베리파이의 경우에는 OS 포팅 자료가 인터넷에 많이 있으니까 도움이 되지 않을까 생각합니다.
https://www.google.co.kr/search?newwindow=1&site=&source=hp&q=%EB%9D%BC%EC%A6%88%EB%B2%A0%EB%A6%AC%ED%8C%8C%EC%9D%B4+%EB%A6%AC%EB%88%85%EC%8A%A4+%ED%8F%AC%ED%8C%85&oq=%EB%9D%BC%EC%8A%A4%EB%B2%A0%EB%A6%AC%ED%8C%8C%EC%9D%B4+%EB%A6%AC%EB%88%85%EC%8A%A4&gs_l=hp.3.2.0i13k1l7j0i13i30k1l3.756.4459.0.6605.20.16.0.0.0.0.451.2498.0j3j5j1j1.10.0....0...1c.1j4.64.hp..14.5.1390.0..0j0i10k1j0i10i30k1.igbwmkBkfIE
Commented by 진로설계상담 at 2017/05/18 01:43
안녕하세요. 임베디드 분야에 대해 관심이 있는 군입대를 앞둔 중상위공대 전자공학 3학년 학부생입니다. 기본 회로설계부터 hw 동작하는게 신기하고 납땜 및 여러 모듈을 연결해서 제어하는게 정말 재미있게 느껴지는 한편, c언어나 JAVA같은 완전 high level language도 재미가 있고, 앱개발하는데 흥미가 특히 무지많습니다. 그런데, 철없는 질문이지만은,, 제가 주변에 임베디드 쪽으로 가고싶다고 하면 주위 학부생들은 한숨부터 쉬고, 인터넷에서 경력자분들이 써놓은 글들을 읽어보면 일이 너무 고되고, 야근에 박봉에 시달리는 분들이 많이 계시는것 같더군요.. 물론 흥미를 느끼는 분야고, 공부를 하기위해서는 회사에서 야근에 시달리더라도 전문가가 되기 위해서 많은 시간을 들여야 하는 것은 맞습니다만.. 제가 철이 없어서 인지는 몰라도 저는 저녁이 있는 삶, 가족과 함께 하는 삶, 그리고 직장/직장 상사가 아닌 나 자신이 주도권을 갖고 삶을 살고 싶은데, 이런 경우에는 임베디드 산업으로 가면 고통스러울까요..? 그리고 임베디드 산업쪽으로 해서 해외에 취업하는 루트가 존재하는지 궁금합니다. SW산업은 해외취업(영어는 native수준입니다)이 다른 학문보다 쉽다고 들어서 대학원을 컴공쪽으로 갈까도 생각하고 있습니다..
Commented by 히언 at 2017/05/18 14:08
안녕하세요, 히언입니다.

진로를 걱정하시는 시기에 적당한 고민을 하고 계신 것 같습니다.
제 사견으로는 저녁이 있는 삶, 가족과 함께 사는 삶, 나 자신의 주도권이 있는 삶의 전제 조건은
어느 직업을 갖더라도 자기 실력이라고 생각합니다.

어느 직업, 어느 회사에서건 자기 실력이 갖추어 지지 않은 상태에서 자기 주도권을 갖기는 매우 어렵다고 생각합니다.
그러니, 좋아하시는 것을 발견하시고, 좋아하는 것을 잘 하시고,
자기 실력을 갖추면 고통스럽지 않은 삶이 기다리고 있을 것이라고 생각하고 있습니다.

또한 해외 취업도 마찬가지라고 생각하고 있습니다.

제가 임베디드를 했다고 해서, 임베디드 업계를 추천한다거나, 비추천하기 보다는
진로설계상담님의 진로에 더 명확한 방향성이 있으면 좋겠다고 생각했습니다.
과한 조언이라면, 흘려들으시고, 도움이 되는 조언이라면 도움이 되었으면 좋겠습니다.

그럼 모든 일에 건승하시길 바라겠습니다.

히언입니다.
Commented by 진로설계상담 at 2017/05/18 15:13
조언 감사합니다. 매번 좋은 포스팅도 감사합니다.
Commented by 문의 at 2017/06/05 19:13
홈페이지에 보이는 그림들이 모두 깨져서 나오는데, 혹시 저만 이상한 건가요?
아님 server에 그림이 다 깨진건가요?? ^^;
Commented by 히언 at 2017/06/06 02:56
저.. 확인해 봤는데.. 저는 안깨지는거 보니까.. 뭔가 문의님 PC에 문제가 있는 것은 아닐까요? ㅠㅠ
Commented by 최성원 at 2017/06/07 18:59
안녕하세요 최성원이라고 합니다.

embedded linux 시스템을 포팅하던중 한계에 부딪쳐 초면에 불구하고 질문을 드립니다.

질문은 ubuntu embedded linux 부팅중에 Ctrl + C 를 누르면 /etc/init.d의 사용자용 스크립트를
실행하지 않도록 만들고 싶습니다.

이것저것 해보고, 열심히 구글링을 해도 답이 나오지를 않네요.
혹시 이런 내용을 아신다면 조언을 부탁드립니다.

embedded linux에 대해선 초보자라 모르는것이 너무 많습니다.
읽어주셔서 감사합니다.
Commented by 히언 at 2017/06/07 21:39
죄송합니다만, shift를 눌러서 skip하는 방법외에 생각나는 것이 없습니다.

더 좋은 방법을 찾게되면 알려드리겠습니다.

즐거운 저녁시간되세요!
Commented by 개성있는 북극여우 at 2017/06/07 19:37
안녕하세요 히언님, 저는 임베디드 관련 기업에 입사한지 5개월차인 신입 연구원입니다.
사실 전공만 전자공학과일 뿐이지 거의 백지와도 같은 상태인 제 상태를 스스로 너무 잘 알기에
따로 공부를 해야겠다 싶어 임베디드 레시피를 구입해 공부하게 되었고 지금은 이 책을 가지고 스터디를 결성해 함께 공부해보려 하는 중입니다.
그러나 시작부터 조금 고민스러운 점이, 임베디드 레시피 책을 가지고 이론 공부를 하면서 보드를 하나 선정해서 실습도 진행해보고자 하는데
모임에 딱히 제대로 아는 사람이 한 명도 없어 어디부터 어떻게 시작해야 할지 너무 막막하기만 합니다.
프로젝트 형식으로 주제를 정해놓고 그에 맞는 걸 해야좋을지, 아니면 이론적인 내용부터 훑고 뭔가 시작해야할지.
물론 공부하는데에 있어 어떻게 해야만 하고 어떤 길로 가야만 좋고 이런 것은 없다고 생각합니다.
그래도 혹시 히언님께서 추천해주시는, 임베디드 시스템을 전체적으로 이해하고 공부하는데 좋은 방법이 있다면 추천받고자 하는 마음에 글을 남깁니다.
감사합니다.
P.S
혹시 이런 질문들을 메일로도 받으시나요?
받으신다면 메일주소가 어딨는지 알 수 있을까요?
Commented by 히언 at 2017/06/07 21:38
안녕하세요.

보드를 선정하실 거면, 저는 그냥 라스베리파이로 해보시는 것이 어떤가 생각합니다.
라스베리파이를 이용하면 OS도 올릴 수 있고, 또는 직접 bootstrap과 작은 코드를 돌려볼 수도 있으니까
매우 좋은 선택이라고 생각합니다. 여기에 아두이노를 붙여서 뭔가를 더 해 보시면 좋을 것 같구요.

그리고 저는 개인적으로 프로젝트 형식으로 뭔가를 하면서 틈틈히 임베디드레시피를 레퍼런스로 보시는 것을 추천합니다.
그냥 임베디드레시피만 보시기에는 심심하니까요.
임베디드레시피는 3~10년 엔지니어링을 했는데,
누군가에게 물어보기 쪽팔린 것들을 되짚어 주는 역할을 하기 위해 씌여졌습니다.

그러니까 프로젝트를 하시면서 다시 읽어보시면 새록새록 하시리라 생각합니다.

저에게 질문할 수 있는 방법은 이곳에 주시면 다른 사람들에게도 도움이 되니까 좋다고 생각하고 있고요,
또는 책의 앞쪽에 보면 개인 이메일이 적혀 있습니다!

언제라도 도움이 되는 사람이 될 수 있도록 하겠습니다.

임베디드에 대해서 너무 어려워 마시고, 일단 시작하면 매력을 아실 수 있으실 것입니다.

즐거운 저녁시간 되세요!

히언드림.
Commented by 개성있는 북극여우 at 2017/06/18 19:54
안녕하세요 히언님! 좋은 일요일 저녁입니다.. 역시 언제나 책 잘 보고 있습니다!ㅎㅎ

현재 회사 일 관련해서, 공부를 하고 있는데 RTOS를 올려보고 있습니다.

처음 해보는 거라 그런지 많이 헤매고 있는데요, 일단 간단하게 STM32칩에 RTOS를 포팅한 후 Task 생성해서

LED만 깜빡거리게 해보고 싶은데, 그냥 GPIO를 컨트롤은 하겠는데, RTOS올려서 Task 생성해서 돌려보면 반응 자체가 없는데 이걸 어떻게 디버깅을 해야할지..왜 Task자체가 돌질 않는건지. task가 만들어지기는 한건지, 어느부분에서 문제가 있어서 보드상에서 LED에 반응이 없는건지. 디버깅을 어디서부터 손대야하는지 막막하기만 합니다.

또한, RTOS를 어디서부터 어떻게 공부해야 하는지 막막하네요. 이론을 어느정도 알아야하는거고 어떤 방법으로 실습을 해야하는지.. 조언의 말씀 부탁드립니다. ㅠㅠ

두서없이 쓴글 읽어주셔서 감사합니다.

Bey 올림
Commented by 히언 at 2017/07/12 19:12
RTOS를 올리셨다면, 분명히 최초 task를 살리는 main task가 있을 것입니다. 그곳에서 문제가 있는 것은 아닌지 부터 꼼꼼히 살펴보시는 것이 어떨지! 라는 도움 안되는 조언 드립니다. ㅠㅠ
Commented by 깜찍한 얼음집 at 2017/06/27 13:45
안녕하세요~저자님께서 닷넷을 어떻게 생각하시는지 알고싶습니다
또한 임베디드 개발에 있어서 닷넷이 필요할까요??
지금 다니는회사에서 계속 닷넷을 가르치려고하셔서 고민이네요..
Commented by 히언 at 2017/07/12 19:11
아이고.... 저는 닷넷을 잘 몰라요 ㅠㅠㅠㅠ
Commented by 용감무쌍한 맘모스 at 2017/07/11 21:31
안녕하세요!
전 3년전부터 임베디드 개발자를 꿈꿔온 서울의 한 고3입니다
그동안은 프로그래밍 공부를 거의 하지 못했는데 이제 시험도 끝나서 임베디드 관련 책을 읽고 싶었습니다ㅋㅋ
우선 제 수준은.. 음.. 완전 생초보(ㅜㅜ)입니다
아는건 헬로월드랑 임베디드 기본개념(컴퓨터가 아닌 기기제어 프로그램? 최적화가 중요하다)정도밖에 없고요ㅜㅜ
그래서 고민중인데.. 임베디드 레시피랑 스케치 뭘 사야 하나요?
스케치가 좋을거 같긴 한데 제가 이해할 수 있을까요..?
전 컴맹은 아니고 그렇다고 고수도 아닌 그냥 주위에 많은 컴퓨터 잘 고쳐주는 친구(..)같은 존재라서ㅋㅋㅋㅋ
Commented by 히언 at 2017/07/12 19:11
안녕하세요, 맘모스님.

임베디드라는 것이 일반컴퓨팅시스템과 별반 다를 것이 없습니다.
다만, 하드웨어의 제약사항이 많은 컴퓨팅시스템이라고 보시고 공부를 하시면 될 것 같습니다.

제가 추천한다면 물론 임베디드레시피를 추천하지만 ㅎㅎ
사람마다 각자의 취향이 있는 이유로 더 끌리시는 것을 보시면 될 것 같습니다.

다만, 모든 공부가 그렇듯이 잘 모르겠어도 반복 또 반복을 하다보면
내것이 되는 순간이 올테니까, 그전까지 힘들더라도 앞으로 전진 할 수 있으셨으면 좋겠습니다.

감사합니다.
Commented by 용감무쌍한 맘모스 at 2017/07/13 00:25
감사합니다! 그런데 코너북 사이트에 보면 임베디드 레시피 스케치 둘다 히언님이 올리신 글로 만들어진 책인데 스케치는 입문서 레시피는 기술서적이라고 써있어서..
뭘 먼저 사야할지 고민이에요ㅜㅜ
Commented by 히언 at 2017/07/13 12:08
^^
두개가 좀 달라요.
임베디드레시피는 제가 한거고, 임베디드스케치는 소토님이라고, 다른 분이 진행하신 거에요 ^^
Commented by Yop at 2017/09/22 11:14
안녕하세요. 책을 보다가 궁금한 점이 있어서요.
P.86에 (개정6판) <RAM Memory의 물리적 동작>에서 문제라고 나오는 부분이요.
"RAM 사이즈를 정리하면, 16bit Data로 2^24개 만큼의 크기를 갖는다"라고 나와있는데
이게 바로 위의 RAM 그림과는 관련 없는 문제인거죠?
RAM 그림에는 RD, WR, Address 8pin, Data 8pin -> 총 18pin 이니까요.
그럼 이러한 총 18개의 핀을 가지고 있는 RAM의 메모리 사이즈는 2^18 인가요?
Commented by 히언 at 2017/11/10 13:34
안녕하세요! 제가 답이 많이 늦었네요! ㅠㅠ

Address pin만 가지고 얘기하면 돼요!
그러니까, Address 8pin이면 2^8 이에요! 데헷
Commented by ja at 2017/11/06 13:05
안녕하세요! 강좌 잘 보고 있습니다ㅎㅎ
저는 트랜지스터 스위칭 기능을 사용하는데 5v를 12v로 사용하려고 합니다.
그런데 히언님 강좌에는 트랜지스터를 on시키려면 5v정도의(원래 전압과 같은 크기의) 전류를 base에 흘려주어야 트랜지스터가 on 된다고 써 있더군요ㅎ
제가 사용하는 기기는 3.3v를 출력하고, 그걸 이용해 12v 전원으로 스위칭하려 하는데 어떻게 해야 하는지 알려주실수 있나요 :)
감사합니다!!
Commented by 축구사랑 at 2017/12/03 02:04
책을 산지 꽤 되었는데 이제야 정독을 하고 있네요^^
볼수록 깊이가 느껴지는 책입니다.
Assembly로 만드는 방법 이란 챕터를 보고있는데요, tcc에 -S 옵션이 없어졌나봅니다.
책에 소개된 spaghetti.s 와 유사한 내용을 보고싶으면 어떻게 해야 할까요?
그리고, 예제는 리눅스/윈도우 어디서 컴파일해도 상관 없을까요?
읽어주셔서 감사합니다.
Commented by 히언 at 2017/12/03 11:43
넹~ 어디서든 컴파일 하시면 비슷하게 나와요!
Principle은 똑같으니까, 한번 익숙해 지시면 금방 이해하실 수 있을 거에요.

그리고 RVDS 사용하시는것 아닌가 싶은데, 어쨌든 -S 옵션은 아직 사용 가능해요.
컴파일러 option에 대해서는 아래 링크에서 보시면 정말 다양하게 지원해요!

좋은 하루 되세요!

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0348bk/CIHGEBDH.html
Commented by 무뿔 at 2017/12/03 06:06
이 사이트 지금도 운영되나요? 강좌123에 링크가없는 것들은 어떻게 된건가요?
Commented by 히언 at 2017/12/03 11:33
강좌 123이 어디에 있나요?
Commented by 안녕하세용 at 2017/12/05 21:42
안녕하세요 취준생입니다..
이 홈페이지는 제게 큰 도움이 되고 있습니다.. 몇번의 면접에서 좌절하고 난뒤 이쪽에서 많은걸 배우고 있네요.
nor 플래쉬에 관련해서 질문드려요
http://recipes.egloos.com/5276602
첫번쨰 질문은요..
0xAAA부터 시작한 이유.
CPU의 A1핀이 Flash 의 A0 핀에 연결되어 있어요. 그것이 이유입니다. Flash 입장에서 0x555입니다. 결론은 Address를 왼쪽으로 1bit shift 시켰습니다.
이것이 이해가 안가요..
A1핀이나 A0핀이나 다 같은 것이라고 생각을 하는데 LED 킬때랑 같이요.....
2.0x555인데 왜 0x554라고 쓰신 이유가 궁금합니다.

int main(void)
{

addr16a = (unsigned short *) (*parameter + 0xaaa);/* first and third address for command sequence */
addr16b = (unsigned short *) (*parameter + 0x554);/* second address for command sequence */

/* start command sequence for chip erase */
*addr16a = 0xaa;
*addr16b = 0x55;
*addr16a = 0x80;
*addr16a = 0xaa;
*addr16b = 0x55;
*addr16a = 0x10;

}
Commented by 히언 at 2017/12/06 10:19
이거는 소토님 강좌네요! 소토님! 대답해 주세요~!!
Commented by jj at 2018/01/12 18:45
여기에 궁굼한점 올리면 되나요..?ㅎ

책으로도 보고 있는데 완전 초보적인 질문이 있습니다...ㅎ
cache를 쓸 때, 자주 접근하는 데이터가 cache에 남는건가요..?
아니면 cache에 어떤 데이터를 올려 놓고 직접 컨트롤해서 사용할 수도 있는가요..?

혹시나 ti칩 쪽으로도 아신다면 혹시 arm과 ti칩과 비교해서 알려주실 수 있으신가요...?ㅠㅎ
Commented by 히언 at 2018/01/13 13:44
안녕하세요!

캐시를 쓸 때, 자주 접근하는 데이터가 캐시에 남는거에요 ㅎㅎ. 캐시에 특정 데이터를 올려놓을 수도 있긴 한데
안쓰면 지워져요!
Commented by jj at 2018/01/15 09:28
안녕하세요...ㅎ 궁굼한점이 또 있어서 질문 글 올려요...ㅎ
cache를 사용할때 mmu랑 무조건 같이 사용을 하게 되는건가요..?
그리고 뭐 예를들면 실제 물리주소 1번지~1000번지 까지 배열이 할당돼 있는데, 해당 배열만 cache에 올려서 사용을 하고 싶다고 한다면...
이렇게 사용은 못하는 건가요..?

그리고 좋은 자료와 책 감사합니다~ㅎ
Commented by 히언 at 2018/01/15 13:55
mmu와 cache는 별개에요! 원하는 주소의 값을 캐시에 올릴 수는 있지만... 이득이 뭔지 모르겠어요!
Commented by eucalyptus at 2018/01/23 17:58
모르는 내용이 많네요.. 이쪽에서 일한지도 10년이 살짝 넘었지만.. 아는게 별로..ㅋㅋ
좋은 사이트 군요. 내용이고. 감사합니다.
종종 들려 좋은 글들 정독해 보겠습니다.
저는 TCON 설계쪽 있습니다.
Commented by 히언 at 2018/01/23 20:42
환영합니다!
Commented by 초심자 at 2018/02/26 17:07
안녕하세요 히언님!

질문이 있습니다


reset handler를 호출하는것은 exception vector가 맞는건가요?
Commented by 히언 at 2018/02/27 18:17
넵 맞습니다!
Commented by 황영주 at 2018/06/26 17:40
안녕하세요. 히언 님
에이콘출판 황영주입니다.

다름이 아니라 저희 번역서 중 GREAT CODE라는 책이 있습니다. 2006년 출간된 원서라 내용을 업데이트해서 재출간하려고 기획중에, 저희 역자 분께 히언 님을 추천받고 연락드렸습니다.
1. GREAT CODE 제1권 하드웨어의 이해(http://www.acornpub.co.kr/book/great-code-vol1)
2. GREAT CODE 제2권 로우레벨을 고려한 프로그램 최적화(http://www.acornpub.co.kr/book/great-code-vol2)

이 책 업데이트가 아니어도 혹시 기획중이신 책이 있다면 저희와 출간해보시면 어떨지 조심스럽게 제안드려봅니다.
궁금하신 부분이나 상의하실 부분 있으면
덧글이나 메일(young@acornpub.co.kr), 전화(02-2653-7600)로 회신 부탁드립니다.
감사합니다.

황영주 드림
Commented by 히언 at 2018/06/26 20:09
안녕하세요! 황영주님!

감사한 제안 잘 받았습니다!

조만간 연락드리도록 하겠습니다. 감사합니다 ^^
Commented by 황영주 at 2018/06/28 09:41
안녕하세요. 히언 님
회신 감사합니다.
연락주시기 기다리겠습니다!

즐거운 하루 보내세요.
감사합니다. ^^
Commented by 김천영 at 2018/08/02 17:12
안녕하세요,
어디서부터 적어야 할찌?
만학도입니다, 올해 환갑이지요, 수십년 전자 하드웨어만 해온 전형적인 땜쟁이랍니다,
오래전부터 SW에 관심은 있었지만 나이 먹어 누구에게 배울만한 처지가 못되었는데, 우현히 여기를 보고, 컴으로 보기가 어려워 임베디드 스켓치를 사서 보려하니 모르는 것이 많아서 용기를 내어 글을 남겨 봅니다,
제가 하는 하드웨어에 SW를 배워 두면 좀더 일하는데 진전이 있을것 같습니다, 전 조그만 전자 제조공장을 하고 있으나 SW를 못하니 항상 원청업체에 이끌리어 거의 임가공 수준으로 하고있습니다.
어떤 방법이 좋을찌 잘모르지만 SW를 배워 일단 도전하고 싶은데, 그래서 글을 남겨 봅니다.
제 메일과 전번은 candoo@ein-el.com, 010-3607-2364입니다.
많은 지도 부탁합니다.
Commented by 히언 at 2018/08/02 21:58
임베디드스케치는 소토라는 분이 진행하신 강좌입니다.
소토님에게 남겨주신 메세지를 전달해 보겠습니다만, 답변이 잘 올지는 모르겠습니다.

잘 아시겠지만, 배움에 늦은 나이는 없습니다. 모든 일에 건승하실 수 있도록 기원하겠습니다.
감사합니다.
Commented by 마카롱 at 2018/09/11 17:48
히언님 안녕하세요!! 저는 전자전기공학부 학생이고 임베디드소프트웨어 엔지니어를 꿈꾸고 있는 학생입니다!
질문이 있습니다 ㅎㅅㅎ
히언님도 1장부터 하드웨어를 다뤄주신만큼 하드웨어 지식이 중요하다고 말씀해 주셨는데
하드웨어를 아는것이 구체적으로 어떻게 도움이 되는지 알려주실수 있을까요??
저는 아직 두개가 따로따로 처럼 느껴집니다 흑흑
Commented by 히언 at 2018/09/11 23:06
안녕하세요. 히언입니다.

임베디드 시스템에서도 하드웨어 지식이 그다지 해박하지 않아도 되는 경우가 많이 있기는 합니다만 그런 경우라면 굳이 임베디드 소프트웨어 엔지니어가 아니더라도 개발 참여가 가능한 부분이라고 생각합니다.

보통 임베디드시스템은 특정 목적을 가진 시스템인 경우가 많은데 이런 경우라면 대개 하드웨어 부분에서 constraints가 많은 경우가 많고 하드웨어의 이해가 필수인 경우가 많습니다... 라고 생각합니다. ^^
Commented by 마카롱 at 2018/09/12 09:49
으앙 히언님 우문현답 감사합니다 ㅠㅠ
책도 구매했어요 ㅠㅠㅠ
애정합니다!!
Commented by 히언 at 2018/09/13 00:40
아이고 예쁘게 봐 주셔서 감사합니다.

근사한 임베디드 시스템 엔지니어가 되시길 기대할게요!
Commented by 순수한 바다표범 at 2018/10/18 00:31
안녕하세요 히언님
EMBEDDED 책을 사서 읽고있는 학생입니다.
읽으면서 내용정리를 블로그로 하고있는데 공개로 해도될지 여쭤봅니다~
https://blog.naver.com/tjsdlf987/221379757521 블로그 위치고 문제시에 비공개로 하겠습니다~
Commented by 히언 at 2018/10/18 12:57
안녕하세요! 바다표범님!

임베디드 세계에 들어오신 것을 환영합니다.
내용정리 하시는 것도 좋고, 세미나 용도로 사용하셔도 좋습니다! 그것이 모든 사람들을 위한 일이니까요.

다만, 출처가 꼭 기재되어야 합니다. 이 조건이면 출판사가 양해하는 것으로 합의했습니다.

꼭 좋은 임베디드 엔지니어가 되어 주세요!
Commented by 낙타선생 at 2018/11/26 08:52
안녕하세요 히언님.

히언님의 책으로 공부하던 중 7-15 Device Control and System Architecture - JTAG Interface를 Control 해보자
내용에 해당하는 그림 중 하나가 이해가 잘 되지 않아 글을 남깁니다.

Multi core system에 대한 디버깅을 위해 JTAG를 Daisy Chain을 그림으로 소개하신게 있는데 core1과 core2가
마치 데칼코마니 처럼 되어있더라고요. Core1과 core2가 동일한 형태여야 하고 bypass를 통해 core1의 TDI가
Core1의 TDO로 전달되고 그것이 Core2의 TDI로 들어가야 하는게 아닌가 생각되었습니다만. 제가 잘못 생각하고
있는 걸까요?
Commented by 히언 at 2018/11/26 11:43
안녕하세요 낙타선생님.

말씀하신대로의 구조가 맞는데 그림에서 왼쪽 코어의 TDO가 표시가 안되어서 헷갈릴 수 있게 되어 있네요 ㅠㅠ. 좋은의견 감사합니다!
Commented by 낙타선생 at 2018/12/07 08:54
안녕하세요 히언님
강의 8-2(Interrupt lock에 의한 watchdog reset)에서 600페이지의 내용에 따르면
Interrupt_Lock() 시에 blx 0xf016d8 하면서 R14에 0x00EDCF18을 넣어둔다고
하셨는데 598페이지의 Reset이 발생했을 당시 Context의 R14에는 왜 0xEDCF19로
되어있는 건가요?
Commented by ㅂㅎㅎㄴㄷ at 2019/05/21 18:40
이 블로그 30분 읽은게 3시간 수업보다 훨씬 깔끔하고 설명이 잘 되어있네요.
Commented by 김관영 at 2019/06/25 14:40
안녕하세요. 많이 배웠었는데, 오랜만에 놀러왔습니다.
잘 지내시죠?
Commented by 허준 at 2019/08/07 14:34
저 책 구매하고싶은데 걸어주신 링크는 접속이 안되네요. 구매불가인가요?
Commented by 히언 at 2019/08/07 21:42
안녕하세요, 출판사에 문의해 보니, 도메인 문제로 현재 접속이 안된다고 합니다.
내일부터 접속 가능하다고 합니다. ㅠㅠ

죄송합니다!
Commented by 히언 at 2019/08/28 11:03
안녕하세요, 임베디드 개발자 여러분.

2019년 8월 8일 현재 현재 코너북 홈페이지 도메인 문제가 있습니다. 출판사에 문의해 보니, 도메인 문제로 현재 접속이 안된다고 합니다. 조속히 복구중이라고 합니다. ㅠㅠ
죄송합니다.
Commented by 아쉬움 at 2019/08/27 19:55
책은 마음에 드는데, 출판사가 정말 엉망이네요..;;;

받은 책이 100페이지나 빠져 있더라구요.
정말 책이 필요할 시기에 그 부분을 못봤죠..;;

재배송을 게시판 7/31에 요청햇는데, 아무 연락 못받다가
게시판에 답글로 8/4에 재배송 했으니 반품하라고 글하나 띡 남기고,
책은 회사에 잇는데, 새벽에 택배기사님으로부터 책 반품할 꺼 내 놓으라는 문자 하나 달랑 받고
출근 후에 또 택배기사님께 연락와서 반품이 불가능한 사정 설명드리니 반품 취소로 처리한다고 하더라구요.

그래서 8/5 반송 어떻게 하는지 (송장에 주소는 써야 하는지 등) 게시글 남기니,
답글, 메일 연락 전혀 없다가, 조금 전(8/27 - 글 남기고 3주뒤)에 전화로 반품 왜 취소했냐고 전화오더라구요.

그래서 사정 얘기하면서 불편했던 점 얘기하니,
미안하다는 말은 죽어도 안하고, 책을 인쇄하다보면 파본이 나기도 한다고 하고..
정말 어이 없네요..
그러면서 반품해드렸잖나요 하더라구요.


정말 태어나서 이런 서비스는 처음이었어요.
누가 보면 책 공짜로 얻은 줄 알겠어요..


다음에 책 내실 때는 정말로 다른 출판사로 내셨으면 해요.
Commented by 히언 at 2019/08/28 08:34
아쉬움님! 히언입니다.

제가 대신해서 정말 죄송합니다. 많이 불편하셨을 것이 느껴져서 뭐라 말씀드려야 할지 모르겠습니다.

출판사에 아쉬움님을 대신해서 항의 하겠습니다.

독자님들의 즐거워야할 경험이 불쾌함이 되면 안된다는 점 분명히 짚고 넘어가도록 하겠습니다.

정말 죄송하고, 저도 화가날 따름입니다.

혹시 다른 요청사항이 있으시면, 댓글로 남겨주시면 출판사에 직접적으로 항의를 하겠습니다.

감사합니다.





Commented by 동진 at 2019/12/28 22:33
안녕하세요 ㅎㅎ 임베디드 신입 개발자로 취업했는데, 여러가지 강좌를 보면서 많은것을 배워가네요!!
좋은 강의 제공해주셔서 정말 감사합니다.!!!
Commented by 히언 at 2019/12/31 13:51
저야말로 감사합니다. 헤헤
Commented by 손함마 at 2020/03/04 23:30
안녕하세요 히언님!
책을 구매하려고 고민중인데
지금 웹에 올라와있는 내용보다 책에 더 많은 내용이 들어가 있는건가요??
아님 아예 같은 내용인가요??
Commented by 히언 at 2020/03/05 12:33
안녕하세요, 손함마님.

아예 같은 내용은 아니지만요! 웹에 올라와 있는 것으로 학습하기에도 충분하다고 생각해요!

데헷
Commented by 깨알같은 얼음의신 at 2020/03/09 08:01
안녕하세요 개발자님 지금 해외에서 대학을 다니고 있는데 우연히 블로그를 보게 되어서 읽는데 정말 이해가 잘되네요 그래서 책을 구매하고 싶은데 제가 해외에 있어서 살수가없는데 혹시 pdf라도 구매가 가능한가요??
Commented by 히언 at 2020/03/09 18:56
안녕하세요, 꺠알같은 얼음의신님.

pdf는 따로 없고, 출판사에 문의하시면 해외배송도 하는 것 같아요. ㅠㅠ
Commented by 깨알같은 얼음의신 at 2020/03/09 19:30
해외배송도 지금은 코로나 기간이라 받을수가 없네요 ㅠㅠ
Commented by 히언 at 2020/03/10 00:19
아... 그런가요???? ㅠㅠㅠㅠ 어쩌죠..
Commented by 깨알같은 얼음의신 at 2020/03/10 00:54
블로그에 있는글만 봐도 충분한가요 ??
Commented by 히언 at 2020/03/10 10:45
아... 차이가 있긴 해도, 문제 없지 않을까요?
Commented by 후아 at 2020/05/21 16:26
책샀어요!!!! 임베디드 레시피와 임베디드 스케치 두권이요!!! 공부하다가 이해가 있으면 마구마구 글쓰겠습니다!!
Commented by 히언 at 2020/05/21 19:30
헛. 후아님. 잘 부탁드립니다. ㅎㅎ
Commented by 토마호크 at 2020/08/04 09:18
안녕하세요 히언님.
웹과 책을 넘나들며 많은 도움을 받고 있습니다. 감사 말씀 드립니다.
다름이 아니라 궁금한 점이 있어 댓글 남깁니다.
device controller를 memory mapped IO 방식으로 control 하는 경우, MCU는 특정 메모리 영역을 device controller 가 사용하는 공간으로 할당하는 것까지는 이해가 됩니다.
그런데 device가 사용하는 메모리 영역을 MCU는 해당 device가 사용하는 영역인걸 알고 있지만, device 입장에서는 그 메모리 영역이 자기가 사용하는 영역이라는 것을 어떻게 알수 있을까요?
MCU 입장에서 이 주소 영역이 " 이 영역은 너가 사용하는 메모리 영역이야"라고 알려주는 과정이나, device 입장에서 이 주소로 읽기 쓰기를 하는 것은 " 내가 사용하는 영역이네!~" 하는 단계가 있어야 하는것 같은데..
그 과정이 무엇인지 궁금합니다.
Commented by 히언 at 2020/08/05 19:44
안녕하세요!

말씀하신 내용을 정리하면
MCU는 메모리 영역을 아는데, Device는 모른다 이런 의미신거죠?

사실 Device는 몰라도 상관없어요. MCU에서 특정 메모리 영역을 접근할 때
해당 할당된 Device로 접근하게 되고, Device는 MCU가 주는 명령만 실행하면 되니까요!
Commented by 졸다구 at 2020/10/14 17:03
안녕하세요! 레시피보며 많이 배우고있습니다.

공부가 부족해서 아직 책의 내용을 많이 이해는 못하지만

훗날 후배 개발자에게 많은 도움을 주는 개발자가 되고싶어요 히언님처럼~~~~
Commented by 히언 at 2020/10/15 16:26
졸다구님!

고맙습니다. ㅠㅠ 힘이 마구마구 솟아요!!!
Commented by 개념나무 at 2020/10/29 15:57
안녕하세요 올려주신 글보며 많은 공부하고 있습니다 감사합니다

제가 이해가 안되는 부분이 있어서요....

RC 회로 감잡자. 파트에서 끊어진 회로 3번이 이해가 안되는데요.....

커패시터인데 어떻게 5V가 나오는지 이해가 안되서요......3,8번빼고 다이해가 되는데
두개만 이해가 안되네요...
Commented by 히언 at 2020/10/29 17:40
커패시터니까, DC에서는 끊어졌다고 보심 돼요!
Commented by 개념나무 at 2020/10/29 16:00
아 그리고 제가 임베디드쪽에서 일하면서 공부중인데 펌웨어와 GUI쪽으로 일하고있습니다

회로도보는법을 공부해보려 하는데 올려주신 자료중에서 어디서 부터 보면 될까요!?

추천해주시는부분부터 보려고 합니다 추천좀 해주세요!!
Commented by 히언 at 2020/10/29 17:41
음... 제 추천은요!. 처음부터 보심 어떨까요?
개념나무님이 무엇을 알고 모르는지 모르니까요!
Commented by 개념나무 at 2020/10/29 17:51
답변 감사드립니다! DC에서 끊어졌다고 생각하면 3번그림의 경우에 1,2번 모두 0V로 나와야 하는것 아닌가 해서요!!
Commented by 이규진 at 2020/10/30 00:46
안녕하세요~! 막 직장인이 된 사회 초년생입니다. 제 업무는 의료기기 하드웨어 설계 쪽 일을 하게 되었는데요. 전자과를 나왔지만 처음부터 다시 공부하는 마음으로 열심히 찾아보고 공부하다가 히언님의 이 블로그를 우연히 알게 되었습니다! 모니터로 보는 것보다 책으로 보는 걸 더 선호해서 책을 구입하고 싶은데 코너북에서 구입하면 현재 이 블로그에 나와있는 내용과 같은 책으로 구입할 수 있는 건지요? 아니면 책이 좀더 뭔가 추가 되었거나 개정되었나요??
그리고 이 사이트에서 히언님 강좌는 8장을 볼 수가 없고, soto님의 강좌는 5장 중간부터 끝까지 볼 수가 없던데 그건 왜 그렇게 되어 있는지 여쭤봐도 될까요??
Commented by 히언 at 2020/11/01 10:41
안녕하세요~! 이규진님.

반갑습니다.

책에 관련해서는 코너북과는 여러가지 고객대응이 미흡해서,
저작권 계약을 종료했고, 현재는 남은 재고에 대하여 조율없이 판매되고 있는 상황입니다.

머지 않아 새로운 출판사에서 새롭게 책이 나올 수 있습니다.

관심 가져주셔서 감사합니다!

Commented by 이규진 at 2020/11/03 01:38
그렇군요! 그럼 그때 히언님 강좌는 8장을 볼 수 있고, soto님의 강좌도 5장 중간부터 끝까지 볼 수 있는 건가요? 이 부분에 답변이 없으셔서 다시 여쭤봅니다..ㅎㅎ
그리고 혹시 머지 않아라고 하셨는데 출판 계획 날짜를 대략적으로라도 알려주실 수 있으실까요?
출시일이 늦다면 일단 구형책을 중고로 사서 보고 있어야 하는지 아님 곧 나온다면 새책을 사서 봐야하는지 계획을 잡고 싶어서 바쁘신 와중에 이렇게 여쭙니다...!
Commented by 히언 at 2020/11/03 18:48
안녕하세요! 이규진님.

Embedded Recipes는 1월에 출판될 예정이어서, 좀 멀긴 합니다. ㅠㅠ.
책에는 8장을 보실 수 있으니까 기대하셔도 돼요!

감사합니다.
Commented by 이규진 at 2020/12/28 15:07
곧 1월이네요! 출판 날짜만 기다리고 있습니다!^^
Commented by 히언 at 2020/12/28 21:42
이규진님~! 기다려 주셔서, 너무 감사합니다. ㅠㅠ

감동입니다. ㅠㅠ
Commented by 양양 at 2021/01/01 16:45
안녕하세요 히언님!! 임베디드 분야를 꿈꾸고 있는 기계공학도입니다!!
혼자서 공부하면서 히언님 블로그가 정말 큰 힘이 되었습니다 감사드립니다 :D

다름이 아니라 책구매 관련해서 여쭤보고 싶은게 있는데
방학동안 물리적인 책으로 직접 보면서 공부하려고 책을 구매하려고합니다...!
요 윗 댓글에 새로운 출판사에서 책을 새롭게 내신다고 하신걸 봤는뎅

혹시 새롭게 출판하시는 책 내용은 기존 코너북에서 판매 중인 것과 내용상 차이가 있을까요??

아니면 인세관련(?)이런건 잘 모르지만 새롭게 책을 내신다면
어느 쪽에서 사는게 히언님께도 조금 더 도움이 될까요??
1월에 출판될 예정이라니... 기대하고 있겠습니다 !!!
Commented by 히언 at 2021/01/01 20:33
안녕하세요! 양양님!

먼저! 새해 복 많이 받으세요.

새로운 출판사에서 나오는 것은 여러가지 표현이나, 오탈등을 수정해서 나오게 됩니다!
그전에 관리가 좀 소홀해서 잘 해보려고 하는 것 이거든요.

빠르게 나올 수 있도록 노력하겠습니다~

다른 것 보다 제가 도움이 되었다니 너무너무 감사합니다. ㅠㅠ
Commented by 이규진 at 2021/01/15 14:36
히언님! 안녕하세요 ! 책을 오매불망 기다리고 있는 초보 개발자입니다!
작년에 문의드렸을 때 1월 중 출판하신다고 답변해주셨는데 혹시 진행상황이 어떻게 되고 있는지 알 수 있을까요??
공부 계획을 짜고 있는데 히언님의 레시피를 1월 안에 구입할 수 있을지 궁금합니다!ㅎㅎ

벌써 1월 중순이지만 새해 복 많이 받으시고 코로나도 조심하시며 올 한해도 좋은 일만 가득하시길 바랍니다! :D
Commented by 최지한 at 2021/01/19 18:33
안녕하세요 허언님! 임베디드 레시피 도서구매를 너무나 원하는 대학생입니다.
책을 어떻게 구매해야되는지 모르겠어서 질문드립니다. 관련 링크나 구매방법좀 알수있을까요?? 아니면 개정판판매준비 중인건가요?
Commented by 핼로 at 2021/04/26 17:54
안녕하세요
깨지는 링크가 있어서 남겨놓을게요

season2 => 7) Device Control and System Architecture => ⓡ SDRAM 인터페이스 설계

링크가 깨집니다

SDRAM설계중에 공부하다가 들어오게 되었어요
관련 내용 링크 확인해주시면 감사해용!
Commented by 히언 at 2021/04/28 10:54
어흑. 그르네요. ㅠㅠ
찾아보겠지만, 원 링크가 없어졌으면 기대는 못해요 ㅠㅠ
Commented by 이규진 at 2021/04/27 18:10
오...! 댓글 기능이 열렸네요!! 히언님께 무슨일이 생긴줄 알고..ㅠㅠ 건강하시죠?? 책 출판만 오매불망 기다리고 있어요 ㅎㅎ혹시 언제 출시되는지 알 수 있을까요??
Commented by 히언 at 2021/04/28 10:16
이규진님! 안녕하세요!

긴시간 기다려주셔서 너무 감사합니다. ㅠㅠ.
5월 중 출간을 계획하고 있는데, 너무 오래 기다리게 죄송합니다. ㅠㅠ
Commented by 박지훈 at 2021/05/13 16:29
5월에 출간 해주시나요 ㅠㅠㅠㅠㅠ
Commented by 히언 at 2021/05/14 16:34
안녕하세요!

5월 말에 사전 예약 출간이 가능할 것 같습니다. ㅠㅠㅠㅠ
기다려 주셔서 너무 감사합니다. ㅠㅠㅠㅠ

Commented by 이창희 at 2021/05/23 16:20
혹시 출간일이 정해지셨나요?
기다리고 있습니다!
Commented by 히언 at 2021/05/23 21:30
이창희님!! 감사합니다. ㅠㅠ 5월 말을 사전 예약 출간으로 목표하고 있습니다. ㅠㅠㅠ
Commented by 사고싶어요! at 2021/05/24 09:32
출간이 언제인지 알수 있을까요??? 5월말에는 살수있는게 맞나요??!!!
Commented by 히언 at 2021/05/24 21:18
5월 말에는 사전 예약을 받을 수 있도록 하고 어요 ㅠㅠ. 늦어도 6월 초에는 사전 예약을 받을 텐데 그러면 사전 예약 마감 후 일주일 후에는 받아보실 수 있을거에요 ㅠㅠ 너무너무 죄송합니다.
Commented by 이창희 at 2021/05/31 09:36
6월초로 미뤄진건가요? ㅜㅜ
Commented by 히언 at 2021/06/01 08:29
죄송합니다. ㅠㅠㅠㅠ 믿을 만한 곳으로 하려다 보니 늦어졌습니다. ㅠㅠㅠ 아마도 소규모 인디 출판사가 하게 될 것 같습니다. 아주 잠시만 기다려주세요!!!!
Commented by 사고싶어요! at 2021/06/02 18:59
6월초에도 혹시 출간이 안되는걸까요?
Commented by 히언 at 2021/06/03 08:19
다음 주에는 사전 예약을 할 예정인 것 같습니다. ㅠㅠㅠㅠㅠ 기다려 주셔서 너무너무 감사합니다. ㅠㅠ
Commented by 이창희2 at 2021/06/08 17:00
이번주에는 나오나요? ㅜㅜ
Commented by 히언 at 2021/06/09 09:25
네 이번 주에는 사전 예약을 할 것 같아요!!! 기다려 주셔서 너무너무 감사합니다. ㅠㅠㅠㅠ
Commented by 사고싶어요! at 2021/06/10 17:03
이번주에 사전예약은 혹시 어디서 가능한걸까요?
Commented by 히언 at 2021/06/11 10:14
강의실 전체맵에 링크가 생길 예정입니다!!! 헤헿
Commented by 안녕하세요. at 2021/06/15 16:39
안녕하세요?

저는 희언님의 임베디드 레시피 서적을 구매하고 싶은 예비 독자입니다.

다름이 아니옵고, 코너북 사이트에서 해당 서적을 구매하려 했는데,

해당 사이트가 저자 쪽이랑 법적 분쟁으로 인해 접속이 안되더라고요.

혹시 어떻게 되셨는지 궁금합니다.

그리고 서적은 어떻게 구매할 수 있는지 궁금합니다.
Commented by 히언 at 2021/06/15 20:19
안녕하세요, 안녕하세요님.

저랑 분쟁이 있는 것은 사실이지만, 분쟁이 있어서 접속이 안되는 것은 아니에요 ㅠㅠㅠㅠ

http://recipes.egloos.com 임베디드 레시피 첫페이지에 가면 지금 사전 예약을 하고 있어요!! 많이 기다려주셔서 죄송하고 감사합니다.
Commented by 감사합니다. at 2021/06/17 18:38
댓글에 써 놓은 이메일 주소로 메일을 드리려 했는데, 이메일 주소가 올바르지 않다고 나와서...
혹시 죄송하지만 이메일 주소를 정확하게 알려주실 수 있나요?
그리고 사전 예약이 재고에 따라 조기 마감될 수 있다고 하는데, 재고가 어느 정도 남았는지 궁금합니다.
Commented by 히언 at 2021/06/17 22:22
안녕하세요, 감사합니다님.

이메일은 제 이메일 말씀하시는 것인가요? hieonn@gmail.com 이 제 이메일입니다만, 혹시 어느 댓글에 이메일 주소가 틀렸는지 알려주실 수 있을까요?

그리고, 재고 부분은 저는 잘 몰라서요. 그것은 출판사에 문의해 주시면 감사하겠습니다. ㅠㅠㅠ

감사합니다.

Commented by MA at 2021/07/23 15:26
안녕하세요 히언님!
제가 사전예약 기간을 놓쳤는데, 혹시 책을 구매할 수 있는 방법이 없을까요 ㅠㅠ
링크도 사라진것 같고.. 출판사도 알수없네영 ㅠ
Commented by 히언 at 2021/07/23 18:50
안녕하세요! MA님.

음.. 책은.. 임베디드래시피 첫화면에서 책 이미지를 클릭하심 되는데요. 주소는 아래와 같습니다.

https://smartstore.naver.com/snowbook/products/5645780620

여기에서 구매가능하세요 ㅠㅠㅠㅠ

자주 오세욤!
Commented by Mush at 2021/07/24 15:31
안녕하세요 히언님! 현재 전자공학 1학년을 마치고 군휴학중인 학생입니다. 혹시 Embedded Recipes 서적을 전공지식이 별로 없는 제가 읽으면 많이 힘들까요? 구매 의향은 있지만, 혼자 헤쳐나가기에 버거울까 염려됩니다.
Commented by Mush at 2021/07/24 15:36
참고로 지금은 온라인으로 Circuit Analysis 강의를 듣는 중입니다!
Commented by 히언 at 2021/07/25 11:51
안녕하세요 Mush님~!

전공지식이 별로 없으면, 조금 어려울 수는 있겠지만, 제가 권하는 학습 방법은 임베디드레시피를 읽으면서
이해가 안되거나, 모르는 것이 있으면 그것을 하나 하나 찾아가면서 완성하는 방법을 권해 드립니다.

임베디드레시피는 실무하시는 분이 큰 그림을 그릴 수 있도록 설계되었기 때문에 큰 그림을 이해하는 데 많이 도움이 될 거라 생각합니다.

자주 놀러오세요~
Commented by 이북 at 2022/04/28 09:46
이북 출판 계획 없으신가요?
히언은 이북을 출판하라!!
Commented by 히언 at 2022/04/28 22:21
이북님 ㅠㅠㅠㅠ
Commented by 진우 at 2022/05/13 16:27
안녕하세요 기계공학과를 전공하고 자동차 파워트레인 제어 연구실로 석사를 하고 있는 학생입니다.
차량동역학 기반 제어 알고리즘을 만들고 로직을 구성하고 있는 가운데, 임베디드에 대한 분야에 대한 필요성이 느껴져 서칭하다가 찾아오게 되었습니다!

오랜시간 동안 포스팅을 하시는 모습이 존경스럽습니다!

제가 지금 겉핥기 식으로 둘러보긴 했지만, 책 구매를 희망하는데 책 제목을 알 방법이 없어 코멘트드립니다.
책 제목들에 대해 알려주시면 감사하겠습니다.

또, 해당 내용들에 대해 공부하면서 정리하는 글을 네이버 블로그에 기록을 해두고 싶은 마음이 있습니다. 이에 대해서 괜찮은지도 답변 한번 부탁드립니다.

포스팅을 보면서 많은 생각이 듭니다. 멋있으십니다.

회신은 해당 댓글 또는 powertrain.sjw@gmail.com로 부탁드립니다.
감사합니다.
Commented by 히언 at 2022/05/16 00:59
안녕하세요~ 책은 http://recipes.egloos.com 에 있는 책 사진을 클릭하시면 출판사로 이동합니다~!

참고로 제목은 embedded recipes 이고요,

좋은 연구가 되길 기대하겠습니다~!
Commented by serial at 2022/09/27 10:30
임베디드 레시피와 스케치 두개 책의 차이는 무엇인가요?
임베디드 레시피 서적 구매링크는 있는데 스케치는 링크나 구매처가 없네요..
스케치는 더 이상 판매가 안되나요?
Commented by 히언 at 2022/09/27 12:11
안녕하세요~ 임베디드 레시피와 임베디드 스케치는 다른 사람의 강좌입니다.

임베디드 레시피는 제가, 임베디드 스케치는 소토라는 분이 진행하셨던 강좌입니다.
올해 초에 두 책 모두 출판사와 문제로 절판되었다가, 임베디드 레시피만 다른 출판사에서 출간되었습니다.

도움이 되셨으면 좋겠습니다.

Commented by 이근영 at 2022/10/12 13:41
window ce 5.0 포팅 관련 문의

안녕하세요? 히언님

저희는 부천에 있는 의료기기 제조업체인데, 20년전에 개발된 window ce 5.0 embedded IO control board 를 아직도 사용하여 장비를 제조하고 있습니다.

최근에 보드 제작후 디버깅 (프로그램설치) 하는 과정에서 오류가 나서 애로사항이 있습니다.
주로 h-jtag 에뮬레이터 에서 nor 프레시 메모리에 eboot.nb0 파일을 프로그래밍 하는데 오류가 납니다.
(can't erase memory 에러)
개발된지 오래된 보드라서 기술지원을 받을수 없어서 큰 애로가 있습니다.

선생님의 블로그를 보고 임베디드 관련 전문가이셔서 조언을 구할수 있을까 연락드립니다.
가능하시면 저희 디버깅 과정을 보시고, 오류를 검토해 주실수 있을까요 ?

저는 엔지니어가 아닌 관계로 자세한 기술적인 사항을 말씀드리기는 어렵고,
저희 제조팀장이 세부적인 부분을 대응할수 있을 것이라 사료됩니다.

혹시 시간이 되시면 미팅을 하여 검토를 요청드리며,
검토 관련하여 충분한 비용을 지불 할수 있습니다.

회신 주시면 보드 사진이나 세부적인 부분을 의논드리겠습니다.

감사합니다.
㈜휴먼메디텍 이근영 대표 배상 (010-2287-0223)
Commented by 히언 at 2022/10/13 09:22
안녕하세요 이근영대표님~ 히언입니다.

오래된 보드에 문제로 골머리가 아프실텐데, 제가 직접적으로 도움은 드릴 수 있고, nor erase가 안된다면 write protection pin이 active된것 아닌지 정도가 시작점으로 생각납니다.

도움을 요청해 주셨는데, 긍정적인 답변드리지 못해 죄송합니다.

감사합니다!

히언드림
Commented by 이용자 at 2023/02/23 18:09
안녕하세요.
저자님 최신 판이 몇 판(인쇄) 인지 알 수 있을까요?
Commented by 히언 at 2023/02/24 13:27
안녕하세요~ 이용자님.

현재 11쇄입니다! 감사합니다!
친절한 임베디드 시스템 개발자 되기 강좌 글 전체 리스트 (링크) -



댓글





친절한 임베디드 개발자 되기 강좌 글 전체 리스트 (링크) -