In the last syntax ./ means current directory, But only . (dot) means execute
given command file in current shell without starting the new copy of shell, The
syntax for . (dot) command is as follows Syntax:
. command-name
[출처 : http://www.freeos.com/guides/lsst/ch02sec01.html]
간단하게 환경변수를 쓰기 위해 만든 스크립트를 단순하게
실행하면, 별도의 쉘이 생성이 되어 실행되므로 현재 쉘에 적용이 되지 않는다.
그런 이유로 일반적으로 환경 변수로 사용하기 위한 스크립트를 실행 할때는 반드시
source [script.file] 로 실행을 한다.
source [script.file]와 동일하게 . [script.file] 을 실행해도 된다.
TIMER/COUNTER는 숫자가 클럭 마다 1씩 증가 한다.
8051의 경우에는 입력 클럭을 1/12 로 분기 해서 사용하므로 11.0592Mhz로 할 경우에 1초당 921,600 연산이 가능하다.
(반대로 이야기 하자면 921,600 카운트가 진행되면 1초라는 의미이지만, 16bit 카운터로는 65536이 한계이므로 0.07초 70ms가 측정 가능한 최고 시간이다)
일단 타이머와 카운터는 인터럽트나 이런것의 영향 없이 독립적으로 증가 하므로,
정확하게 시간을 측정할 수 있는데
내가 원하는 시간을 재기 위해서 어떻게 카운터를 설정하냐는 것이 문제였다.
(물론 알고 나니 그럴 고민 조차 의미가 없었지만 ㄱ-)
prescaler를 설정해서 1clock에 증가하는 숫자가 1이 아니어서 원하는 횟수를 돌고(원하는 시간후에)
timer/counter overflow interrupt를 발생시키는 것으로 알고 있었는데..
8051에는 일단 timer/counter에 대한 prescaler가 존재 하지 않는다.
(prescaler를 잘못 이해 한것인지는 모르겠지만..)
즉, 원하는 시간을 클럭으로 계산후에 Timer/counter의 초기 값을 설정해주고, 그 값이 overflow 되기를 기다리면 되는 것 이었다.
예를 들어 1ms 를 원한다면
1초 = 1000ms 이므로
대략 921.6 clock 후에는 overflow가 되도록 설정을 해야 하고
256을 넘어 서므로 16bit 카운터로 설정하여
16bit 카운터의 최대 값에서 원하는 시간을 뺀
"65536 - 921 = 64615 = 0xFC67" 을 타이머에 설정을 해주면
원하는 시간인 1ms 후에 overflow가 발생하게 된다.
그리고 overflow 이후에는 0으로 리셋되므로 overflow ISR(Interrupt Service Routine)에는 매번 타이머/카운터를 설정을 해주어야
주기적으로 시간을 측정할 수 있게 된다.
ERRORS EACCES The requested access to the file is not allowed, or search permission is denied for one of the directories
in the path prefix of pathname, or the file did not exist yet and write access to the parent directory is
not allowed. (See also path_resolution(2).)
EEXIST pathname already exists and O_CREAT and O_EXCL were used.
EFAULT pathname points outside your accessible address space.
EISDIR pathname refers to a directory and the access requested involved writing (that is, O_WRONLY or O_RDWR is
set).
ELOOP Too many symbolic links were encountered in resolving pathname, or O_NOFOLLOW was specified but pathname was
a symbolic link.
EMFILE The process already has the maximum number of files open.
ENAMETOOLONG
pathname was too long.
ENFILE The system limit on the total number of open files has been reached.
ENODEV pathname refers to a device special file and no corresponding device exists. (This is a Linux kernel bug;
in this situation ENXIO must be returned.)
ENOENT O_CREAT is not set and the named file does not exist. Or, a directory component in pathname does not exist
or is a dangling symbolic link.
ENOMEM Insufficient kernel memory was available.
ENOSPC pathname was to be created but the device containing pathname has no room for the new file.
ENOTDIR
A component used as a directory in pathname is not, in fact, a directory, or O_DIRECTORY was specified and
pathname was not a directory.
ENXIO O_NONBLOCK | O_WRONLY is set, the named file is a FIFO and no process has the file open for reading. Or,
the file is a device special file and no corresponding device exists.
EOVERFLOW
pathname refers to a regular file, too large to be opened; see O_LARGEFILE above.
EPERM The O_NOATIME flag was specified, but the effective user ID of the caller did not match the owner of the
file and the caller was not privileged (CAP_FOWNER).
EROFS pathname refers to a file on a read-only filesystem and write access was requested.
ETXTBSY
pathname refers to an executable image which is currently being executed and write access was requested.
EWOULDBLOCK
The O_NONBLOCK flag was specified, and an incompatible lease was held on the file (see fcntl(2)).
access()
DESCRIPTION
mode is a mask consisting of one or more of R_OK, W_OK, X_OK and F_OK.
R_OK, W_OK and X_OK request checking whether the file exists and has read, write and execute permissions,
respectively. F_OK just requests checking for the existence of the file.
ERRORS
access() shall fail if:
EACCES The requested access would be denied to the file or search permission is denied for one of the directories in
the path prefix of pathname. (See also path_resolution(2).)
ELOOP Too many symbolic links were encountered in resolving pathname.
ENAMETOOLONG
pathname is too long.
ENOENT A directory component in pathname would have been accessible but does not exist or was a dangling symbolic
link.
ENOTDIR
A component used as a directory in pathname is not, in fact, a directory.
EROFS Write permission was requested for a file on a read-only filesystem.
access() may fail if:
EFAULT pathname points outside your accessible address space.
EINVAL mode was incorrectly specified.
EIO An I/O error occurred.
ENOMEM Insufficient kernel memory was available.
ETXTBSY
Write access was requested to an executable which is being executed.
fstat()
ERRORS EACCES Search permission is denied for one of the directories in the path prefix of path. (See also path_resolu-
tion(2).)
EBADF filedes is bad.
EFAULT Bad address.
ELOOP Too many symbolic links encountered while traversing the path.
ENAMETOOLONG
File name too long.
ENOENT A component of the path path does not exist, or the path is an empty string.
ENOMEM Out of memory (i.e. kernel memory).
ENOTDIR
A component of the path is not a directory.
GIIMP의 도구 상자인데, 주의해야 할 부분은 아래의 부드럽게 하기 , 가장자리 딱딱하게 라는 녀석이다.
이녀석이 기본으로 선택되어 있으므로 의도하지 않은 부분까지도 선택이 된다.
그리고 선택 영역의 점선 표기도 Adobe Photoshop과는 다르게 기본 선택 영역만 점선으로 둘러 쌓인다.
포토샾의 경우에는 흐리게 선택되는 부분까지 점선이 표기 되는데, 이러한 표기법의 차이로 인해서 의도하지 않은
부분까지 한픽셀씩 벗어 나거나 분명히 점선 밖의 영역인데 색이 칠해지는 이해 하지 못할 현상이 발생이 된다.
위의 이유로 인해서 발생한 모습
점선의 우측이 선택된 영역인데 불구하고, 선택 영역이 아닌 좌측 영역 일부에 붉은색이 칠해 진것이 보인다.
위의 부드럽게 선택으로 인해서 약간은 근처까지 선택이 되는 문제인데, 조금은 심각한 버그라고 느껴질 정도이다.
이러한 것을 방지 하기 위해서는 선택과, 칠하는 녀석을 부드럽게 하기는 끄고 가장자리 딱딱하게는 켜고 사용하기 바란다.