'embeded'에 해당되는 글 1395건

  1. 2015.01.28 armv7 errata / kernel
  2. 2015.01.28 NEON enabled?
  3. 2015.01.26 armel / armhf
  4. 2015.01.17 stm32 cortex-m3 api / library
  5. 2015.01.12 ltib on ubuntu
  6. 2015.01.10 stm32f103z ?
  7. 2015.01.09 i.mx283 부팅모드
  8. 2015.01.07 freescale imx283 boot error code
  9. 2015.01.05 Unknown HZ value! (91) Assume 100.
  10. 2014.12.23 S29AL016J 플래시 메모리 BYTE/WORD MODE
embeded/ARM2015. 1. 28. 16:41

cortex-A8 / i.MX515 개발환경에서 커널 빌드하려고 패치하고 설정을 보니

CPU 설정에서 다음과 같은 ARM errata 관련 설정이 보인다.


  │ │        [*] ARM errata: Stale prediction on replaced interworking branch               │ │   

  │ │        [*] ARM errata: Processor deadlock when a false hazard is created              │ │  

  │ │        [*] ARM errata: Data written to the L2 cache can be overwritten with stale data│ │  


음.. 이건 ARM/Thumb 섞어서 쓸때 분기문에서 주소 충돌이 나는 버그 같은데..

Thumb를 활성화 안해준다면 크게 걱정안해도 될 버그 같고

  ┌ ARM errata: Stale prediction on replaced interworking branch ───────────────┐

  │ CONFIG_ARM_ERRATA_430973:                                                                 │  

  │                                                                                           │  

  │ This option enables the workaround for the 430973 Cortex-A8                               │  

  │ (r1p0..r1p2) erratum. If a code sequence containing an ARM/Thumb                          │  

  │ interworking branch is replaced with another code sequence at the                         │  

  │ same virtual address, whether due to self-modifying code or virtual                       │  

  │ to physical address re-mapping, Cortex-A8 does not recover from the                       │  

  │ stale interworking branch prediction. This results in Cortex-A8                           │  

  │ executing the new code sequence in the incorrect ARM or Thumb state.                      │  

  │ The workaround enables the BTB/BTAC operations by setting ACTLR.IBE                       │  

  │ and also flushes the branch target cache at every context switch.                         │  

  │ Note that setting specific bits in the ACTLR register may not be                          │  

  │ available in non-secure mode.                                                             │  

  │                                                                                           │  

  │ Symbol: ARM_ERRATA_430973 [=y]                                                            │  

  │ Prompt: ARM errata: Stale prediction on replaced interworking branch                      │  

  │   Defined at arch/arm/Kconfig:1004                                                        │  

  │   Depends on: CPU_V7 [=y]                                                                 │  

  │   Location:                                                                               │  

  │     -> System Type                                                                        │  

[링크 : http://cateee.net/lkddb/web-lkddb/ARM_ERRATA_430973.html]


매우 특정한 순서의 메모리 연산을 할 경우 캐시 라인이 엉겨서 cpu가 데드락에 빠질수 있다는데.

드물게 죽는(?) 이유가 이 녀석 이었으려나?

  ┌ ARM errata: Processor deadlock when a false hazard is created ──────────────┐

  │ CONFIG_ARM_ERRATA_458693:                                                                 │  

  │                                                                                           │  

  │ This option enables the workaround for the 458693 Cortex-A8 (r2p0)                        │  

  │ erratum. For very specific sequences of memory operations, it is                          │  

  │ possible for a hazard condition intended for a cache line to instead                      │  

  │ be incorrectly associated with a different cache line. This false                         │  

  │ hazard might then cause a processor deadlock. The workaround enables                      │  

  │ the L1 caching of the NEON accesses and disables the PLD instruction                      │  

  │ in the ACTLR register. Note that setting specific bits in the ACTLR                       │  

  │ register may not be available in non-secure mode.                                         │  

  │                                                                                           │  

  │ Symbol: ARM_ERRATA_458693 [=y]                                                            │  

  │ Prompt: ARM errata: Processor deadlock when a false hazard is created                     │  

  │   Defined at arch/arm/Kconfig:1020                                                        │  

  │   Depends on: CPU_V7 [=y]                                                                 │  

  │   Location:                                                                               │  

  │     -> System Type                                                                        │  

[링크 : http://cateee.net/lkddb/web-lkddb/ARM_ERRATA_458693.html]


L2 캐시에 신선한 데이터가 상한 데이터로 바꿔치기 되는 버그.

죽는다고는 안하지만.. 캐시 히트를 못하는 걸까.. 히트했는데 이상한 데이터를 주는 걸까?

  ┌ ARM errata: Data written to the L2 cache can be overwritten with stale data ───────┐

  │ CONFIG_ARM_ERRATA_460075:                                                                 │  

  │                                                                                           │  

  │ This option enables the workaround for the 460075 Cortex-A8 (r2p0)                        │  

  │ erratum. Any asynchronous access to the L2 cache may encounter a                          │  

  │ situation in which recent store transactions to the L2 cache are lost                     │  

  │ and overwritten with stale memory contents from external memory. The                      │  

  │ workaround disables the write-allocate mode for the L2 cache via the                      │  

  │ ACTLR register. Note that setting specific bits in the ACTLR register                     │  

  │ may not be available in non-secure mode.                                                  │  

  │                                                                                           │  

  │ Symbol: ARM_ERRATA_460075 [=y]                                                            │  

  │ Prompt: ARM errata: Data written to the L2 cache can be overwritten with stale data       │  

  │   Defined at arch/arm/Kconfig:1033                                                        │  

  │   Depends on: CPU_V7 [=y]                                                                 │  

  │   Location:                                                                               │  

  │     -> System Type                                                                        │  

[링크 : http://cateee.net/lkddb/web-lkddb/ARM_ERRATA_460075.html]


음.. 요약하면

ACTLR의 특정 레지스터 값은 non-secure mode에서 사용이 불가능해지고

반대로 말하면.. secure mode 라면 발생하지 않을 버그라는 걸까나?

'embeded > ARM' 카테고리의 다른 글

i.mx515 kernel cross compile  (0) 2015.02.02
i.mx515 SDMA  (0) 2015.02.02
NEON enabled?  (0) 2015.01.28
armel / armhf  (0) 2015.01.26
ltib on ubuntu  (0) 2015.01.12
Posted by 구차니
embeded/ARM2015. 1. 28. 08:39

neon을 쓰기 위해서는 kernel이나 uboot 등에서

FPU/NEON을 활성화 해야 하는 것으로 보인다.


The NEON/VFP unit comes up disabled on power on reset. To enable Neon requires some co-processor commands. Below is the assembly code required to enable NEON/VFP. It is in the gcc type syntax. ARM code tools use a slightly different syntax.


Neon and VFP both support floating point, which should I use?

The VFPv3 is fully compliant with IEEE 754

Neon is not fully compliant with IEEE 754, so it is mainly targeted for multimedia applications


[링크 : http://processors.wiki.ti.com/index.php/Cortex-A8]


A sequence for initializing the VFPU can be found in u-boot source.


.macro init_vfpu

  ldr r0, =(0xF << 20)

  mcr p15, 0, r0, c1, c0, 2

  mov r3, #0x40000000

  .long 0xeee83a10

  /* vmsr FPEXC, r3 */

.endm /* init_vfpu */


[링크 : http://stackoverflow.com/questions/19231197/enable-neon-on-arm-cortex-a-series]


Using the Advanced SIMD and VFP in Secure state and Non-secure state other than Hyp mode

To use the Advanced SIMD and VFP in Secure state and Non-secure state other than Hyp mode, you must first define the NSACR, then define the CPACR and FPEXC registers. See Non-Secure Access Control RegisterCoprocessor Access Control Register, and Floating-Point Exception Register.

  1. Enable Non-secure access to CP10 and CP11 and clear the NSASEDIS bit in the NSACR:

    MRC p15, 0, r0, c1, c1, 2
    
    ORR r0, r0, #(3<<10)	    ; Enable Non-secure access to CP10 and CP11
    
    BIC r0, r0, #(3<<14)	    ; Clear NSASEDIS bit
    
    MCR p15, 0, r0, c1, c1, 2
    
    ISB
    
  2. Enable access to CP10 and CP11 and clear the ASEDIS bit in the CPACR:

    MOV r0, 0x00F00000
    
    MCR p15, 0, r0, c1, c0, 2
    
    ISB
    
  3. Set the FPEXC.EN bit to enable Advanced SIMD and VFP:

    MOV r3, #0x40000000
    
    VMSR FPEXC, r3


Kernel mode NEON

================


Introduction

------------

It is possible to use NEON instructions (and in some cases, VFP instructions) in code that runs in kernel mode. However, for performance reasons, the NEON/VFP register file is not preserved and restored at every context switch or taken exception like the normal register file is, so some manual intervention is required. Furthermore, special care is required for code that may sleep [i.e.,may call schedule()], as NEON or VFP instructions will be executed in a non-preemptible section for reasons outlined below.


[링크 : https://www.kernel.org/doc/Documentation/arm/kernel_mode_neon.txt] 



아무튼.. 커널 패치하고 make ARCH=arm menuconfig 로 살펴보니 Floatting point emulation에

(x86일 기본 make menuconfig에서는 보이지 않음)


이렇게 뚜둥! VFP 하위에 Advanced SIMD(NEON)이라고 똭!


머. 도움말은 별거 없다.

[링크 : http://cateee.net/lkddb/web-lkddb/NEON.html]

'embeded > ARM' 카테고리의 다른 글

i.mx515 SDMA  (0) 2015.02.02
armv7 errata / kernel  (0) 2015.01.28
armel / armhf  (0) 2015.01.26
ltib on ubuntu  (0) 2015.01.12
i.mx283 부팅모드  (0) 2015.01.09
Posted by 구차니
embeded/ARM2015. 1. 26. 17:06

리눅스에서 arm 아키텍쳐를 지칭하는 말인데

armhf는 arm Hard Float의 약자인건 확인이 되는데 반해

armel은 약자가 확인이 되지 않는다.


개인적인 추측으로는..

arm emulated 이 아닐까 싶지만..

이렇게 약자를 만드는건 극히 드물테니.. 멀려나?


The armel architecture supports the ARMv4 instruction set.

The armhf architecture supports ARMv7 platform, and more, it adds direct hardware floating-point support.

[링크 : http://www.xappsoftware.com/wordpress/2013/01/31/armhf-versus-armel/]


In Debian Linux and derivatives armhf (ARM hard float) refers to the ARMv7 architecture including the additional VFP3-D16 floating-point hardware extension (and Thumb-2) above.

Software packages and cross-compiler tools use the armhf vs. arm/armel suffixes to differentiate.

[링크 : http://en.wikipedia.org/wiki/ARM_architecture#cite_ref-60]

[링크 :https://blogs.oracle.com/jtc/entry/is_it_armhf_or_armel]



두둥! arm endian little / big 인 듯?

---

Name of the port

The table below recaps which port names Debian/dpkg saw so far.

name

endianess

status

arm

little-endian

Original Debian arm port using original ABI ('OABI'), last release in Debian lenny; being retired in favor of armel

armel

little-endian

introduced in Debian lenny; EABI, actively maintained; targets armv4t; doesn't require an FPU

armeb

big-endian

unofficial OABI port; inactive and dead

[링크 : https://wiki.debian.org/ArmHardFloatPort]

'embeded > ARM' 카테고리의 다른 글

armv7 errata / kernel  (0) 2015.01.28
NEON enabled?  (0) 2015.01.28
ltib on ubuntu  (0) 2015.01.12
i.mx283 부팅모드  (0) 2015.01.09
freescale imx283 boot error code  (0) 2015.01.07
Posted by 구차니
embeded/Cortex-M3 STM2015. 1. 17. 21:37

TI 에서는 stellaris ware 라고 이름도 그럴싸하게 지었는데

ST 너네는.. 왜케 네이밍 센스도 구리니 -_-





Description of STM32F4xx HAL drivers

[링크 : http://www.st.com/st-web-ui/static/active/jp/resource/technical/document/user_manual/DM00105879.pdf]


Description of STM32F2xx Standard Peripheral Library

[링크 : http://www.st.com/st-web-ui/static/active/en/resource/technical/document/user_manual/DM00023896.pdf]



STM32F10x standard peripheral library

[링크 : http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF257890#]

[링크 : http://www.st.com/web/en/catalog/tools/FM147/CL1794/SC961/SS1743?sc=stm32embeddedsoftware]

[링크 : http://www.st.com/.../presentation/product_presentation/stm32_embedded_software_offering.pdf]

[링크 : http://www.st.com/.../presentation/product_presentation/stm32-stm8_embedded_software_solutions.pdf]

'embeded > Cortex-M3 STM' 카테고리의 다른 글

STM32F103 관련 용어  (0) 2021.02.02
CMSIS for stm32  (0) 2018.02.12
stm32 DMA 관련글들  (0) 2017.12.11
cmsis printf  (0) 2017.01.10
stm32f103z ?  (0) 2015.01.10
Posted by 구차니
embeded/ARM2015. 1. 12. 10:42

플랫폼

Ubuntu 14.04 LTS

ltib 13.2.1 (cvs)


Package                Minimum ver   Installed info

-------                -----------   ---------------

glibc-devel            0             not installed

zlib                   0             not installed

zlib-devel             0             not installed

ncurses-devel          0             not installed

m4                     0             not installed

bison                  0             not installed


$ sudo apt-get install libncurses-dev bison zlibc zlib1g-dev

[링크 : http://ubuntuforums.org/showthread.php?t=1632027]



32비트의 경우 아래의 내용으로

$ vi ltib/bin/Ltibutils.pm

 559 $app_checks = {

 560     binutils         => 'ar --version 2>/dev/null',

 561     'gcc-c++'        => 'g++ --version 2>/dev/null',

 562     glibc            => 'ldd --version 2>/dev/null',

 563     'glibc-devel'    => sub { -f '/usr/lib/i386-linux-gnu/libm.so' || -f '/usr/lib/i386-linux-gnu/libz.so'},

 564     'glibc-headers'  => sub { -f '/usr/include/stdio.h' },

 565     'libstdc++' => sub {

 566             return system_nb(<<TXT) == 0;

 567 echo '#include <iostream>

 568 int main() { std::cout << "test"; }' | g++ -x c++ - -o /dev/null

 569 TXT

 570                        },

 571     lkc              => 'mconf -h 2>/dev/null',

 572     ncurses          => 'tic -V 2>/dev/null',

 573     'ncurses-devel'  => sub { -f '/usr/include/ncurses.h' },

 574     'rpm-build'      => sub { `rpmbuild --version 2>/dev/null` },

 575     sudo             => 'sudo -V 2>/dev/null',

 576     tcl              => "echo 'puts \$tcl_patchLevel' | tclsh",

 577     texinfo          => sub {

 578                        warn  "WARNING: you may also need to install:"

 579                             ." tetex-fonts, dialog and textex\n"

 580                          unless  -f '/usr/share/texmf/tex/texinfo/texinfo.tex';

 581                         `makeinfo --version 2>/dev/null`;

 582                     },

 583     zlib         => sub { my @f = (glob('/usr/lib/libz.so*'),

 584                                    glob('/lib/libz.so*'),

 585                                    glob('/lib/i386-linux-gnu/libz.so*')  ); @f > 1 ? 1 : 0 },

 586     'zlib-devel' => sub { -f '/usr/include/zlib.h' },

 587 }; 


[링크 : http://markdingst.blogspot.kr/2011/06/ltib-1105-miss-zlib-under-ubuntu-1104.html]


64비트는 링크의 내용으로

[링크 : https://community.freescale.com/thread/311978]




으아악 막혔다!!! ㅠㅠ

rpmdb: --force-debian: unknown option
Died at ./ltib line 2340.
traceback:
 main::setup_rpmdb:2340
  main::check_rpm_setup:2403
   main::host_checks:1423
    main:542


Started: Mon Jan 12 00:37:29 2015
Ended:   Mon Jan 12 00:37:30 2015
Elapsed: 1 seconds


Build Failed



$ vi ltib

2341 set -e

2342 $cf->{sudo} $cf->{rpm} --root $cf->{rpmroot} --dbpath $cf->{rpmdb} --initdb ||

2343 $cf->{sudo}       rpm   --root $cf->{rpmroot} --dbpath $cf->{rpmdb} --initdb

2344 TXT

2345     } elsif($do_rebuild) {

2346         system_nb(<<TXT) == 0 or die;

2347 set -e

2348 $cf->{sudo} $cf->{rpm} --root $cf->{rpmroot} --dbpath $cf->{rpmdb} --define '_tmppath $cf->{tmppath}' --rebuilddb

2349 $cf->{sudo}        rpm --root $cf->{rpmroot} --dbpath $cf->{rpmdb} --define '_tmppath $cf->{tmppath}' --rebuilddb

2350 TXT 


[링크 : http://cvs.savannah.gnu.org/viewvc/ltib/ltib?root=ltib&r1=1.76&r2=1.77]

 [링크 : https://community.freescale.com/thread/263568]


Processing: lkc

=================

Build path taken because: directory build, no prebuilt rpm, 


Cowardly refusing to clobber existing directory:

 /opt/freescale/ltib/usr/src/rpm/BUILD/lkc-1.4

Remove this by hand if you really want to rebuild this package from scratch


Died at ./ltib line 1380.

traceback:

 main::build_host_rpms:1380

  main::host_checks:1435

   main:542


[링크 : https://community.freescale.com/message/271839#271839]




----


$ sudo apt-get install libncurses-dev bison perl libwww-perl alien cvs

$ cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/ltib co -P ltib

$ cd ltib

$ wget https://community.freescale.com/servlet/JiveServlet/downloadBody/93455-102-3-2835/patch-ltib-ubuntu12.04.sh

$ chmod +x patch-ltib-ubuntu12.04.sh

$ ./patch-ltib-ubuntu12.04.sh


$ sudo visudo

interm ALL = NOPASSWD: /usr/bin/rpm, /opt/ltib/usr/bin/rpm


$ ./ltib 


wget-ssl에서 실패 -_-

[링크 : https://community.freescale.com/thread/324608]

[링크 : https://lists.gnu.org/archive/html/bug-wget/2011-08/msg00041.html]

--without-ssl  삭제


[링크 : http://ltib.org/resources-download#ref_2]

[링크 : https://community.freescale.com/docs/DOC-93455]



우분투 하위버전은 지원하긴 하는데.. 왜케 안되는거야 -_-

x86 Linux

    Redhat: 7.3, 8.0, 9.0, Enterprise release 4

    Fedora Core: 1, 2, 3, 4, 5, 8

    Debian: 3.1r0 (stable), unstable, 4.0

    Suse: 8.2, 9.1, 9.2, 10.0, 10.2, 10.3

    Ubuntu 6.10, 7.04, 7.10, 8.04


[링크 : http://ltib.org/documentation-LtibFaq]


-- 2015.02.10 추가

[링크 : https://importgeek.wordpress.com/2014/05/13/i-mx28-ltib-on-ubuntu-13-04/]


패치

[링크 : https://turbosree.wordpress.com/tag/freescale-ltib-on-ubuntu-12-04/]

    [링크 : https://community.freescale.com/docs/DOC-93455]

    [링크 : https://community.freescale.com/.../93454-102-3-2834/ubuntu-ltib-patch.tgz]

[링크: https://community.freescale.com/thread/308138]

    [링크 : https://community.freescale.com/.../download/271839-220893/438-CreateUbuntu1110ltib110901.docx]


---

2015.04.13

$cf->{rpm} = "rpm" 을 $cf->{rpm} = "rpm --force-debian"$cf->{rpm} = "rpm" 을 $cf->{rpm} = "rpm --force-debian"

[링크 : http://poongbek.blogspot.kr/2011/06/ltib.html]

'embeded > ARM' 카테고리의 다른 글

NEON enabled?  (0) 2015.01.28
armel / armhf  (0) 2015.01.26
i.mx283 부팅모드  (0) 2015.01.09
freescale imx283 boot error code  (0) 2015.01.07
Unknown HZ value! (91) Assume 100.  (0) 2015.01.05
Posted by 구차니
embeded/Cortex-M3 STM2015. 1. 10. 22:30

cortex-m3 라고 해서..

ti의 lm3s1968 / 1607 가지고 놀던 시절의

steallaris 이런걸 생각했는데...


역시 Ti가 짱이었나 싶을 정도로 먼가 많이 미흡한 느낌이랄까..

아무튼 Ride7 이라는 녀석도 체험판이고.. 이래저래 에효...

'embeded > Cortex-M3 STM' 카테고리의 다른 글

STM32F103 관련 용어  (0) 2021.02.02
CMSIS for stm32  (0) 2018.02.12
stm32 DMA 관련글들  (0) 2017.12.11
cmsis printf  (0) 2017.01.10
stm32 cortex-m3 api / library  (0) 2015.01.17
Posted by 구차니
embeded/ARM2015. 1. 9. 23:33

USB Recovery mode로 인해

SD나 MMC 부팅 실패시 USB 부팅모드로 넘어가게 된다. (기본값)

설정에 따라서는 USB 복구 모드를 끌수는 있으나 아무튼 기본값 -_-


이런 중요(!)한 내용이 왜.. cpu 관련 내용에는 없고

EVK 관련 내용에 있는걸까 -_-


12.13.4 USB Recovery Mode

USB boot mode is provided as a fail-safe mechanism for writing system firmware to the boot media. The boot mode is not usually entered by the normal methods of setting the boot pins or OTP, the other methods of entering USB boot mode are referred to generally as recovery mode.

An end user can manually start the recovery mode by holding the recovery switch for several seconds while plugging in USB. Holding the recovery switch is defined as reading the i.MX28 PSWITCH input as a 0x3. There are several switch circuits that will produce this input. The loader also automatically starts recovery mode if a nonrecoverableerror is detected from any boot mode other than USBdisabled completely. Attempts to enter USB boot mode through boot pins, OTP, or recovery methods will result in a chip power-down.


[링크 : http://cache.freescale.com/...=pdf&WT_ASSET=Documentation&fileExt=.pdf]


'embeded > ARM' 카테고리의 다른 글

armel / armhf  (0) 2015.01.26
ltib on ubuntu  (0) 2015.01.12
freescale imx283 boot error code  (0) 2015.01.07
Unknown HZ value! (91) Assume 100.  (0) 2015.01.05
크로스 컴파일 옵션 configure --host  (0) 2014.10.13
Posted by 구차니
embeded/ARM2015. 1. 7. 11:15

SD 메모리 미 삽입

#define ERROR_DDI_SD_MMC_DEVICE_NOT_SUPPORTED (ERROR_DDI_GROUP | ERROR_DDI_SD_DRIVER_GROUP | 0x14)

0x8020A014 ?


빈 SD 메모리

#define ERROR_DDI_SD_MBR_NOT_FOUND (ERROR_DDI_GROUP | ERROR_DDI_SD_DRIVER_GROUP | 0x1D)

0x8020A01D ?


부팅 안될경우 일정 시간뒤 출력

#define ERROR_ROM_USB_CONNECT_TIMEOUT (ERROR_ROM_GROUP | ERROR_ROM_USB_DRIVER_GROUP | 0x8)

0x80502008

'embeded > ARM' 카테고리의 다른 글

ltib on ubuntu  (0) 2015.01.12
i.mx283 부팅모드  (0) 2015.01.09
Unknown HZ value! (91) Assume 100.  (0) 2015.01.05
크로스 컴파일 옵션 configure --host  (0) 2014.10.13
iWMMX / iWMMXt - Intel XScale SIMD instructions  (0) 2014.10.08
Posted by 구차니
embeded/ARM2015. 1. 5. 15:10



sysinfo.c

 /***********************************************************************

* Some values in /proc are expressed in units of 1/HZ seconds, where HZ * is the kernel clock tick rate. One of these units is called a jiffy. * The HZ value used in the kernel may vary according to hacker desire. * According to Linus Torvalds, this is not true. He considers the values * in /proc as being in architecture-dependant units that have no relation * to the kernel clock tick rate. Examination of the kernel source code * reveals that opinion as wishful thinking. * * In any case, we need the HZ constant as used in /proc. (the real HZ value * may differ, but we don't care) There are several ways we could get HZ: * * 1. Include the kernel header file. If it changes, recompile this library. * 2. Use the sysconf() function. When HZ changes, recompile the C library! * 3. Ask the kernel. This is obviously correct... * * Linus Torvalds won't let us ask the kernel, because he thinks we should * not know the HZ value. Oh well, we don't have to listen to him. * Someone smuggled out the HZ value. :-) * * This code should work fine, even if Linus fixes the kernel to match his * stated behavior. The code only fails in case of a partial conversion. * * Recent update: on some architectures, the 2.4 kernel provides an * ELF note to indicate HZ. This may be for ARM or user-mode Linux * support. This ought to be investigated. Note that sysconf() is still * unreliable, because it doesn't return an error code when it is * used with a kernel that doesn't support the ELF note. On some other * architectures there may be a system call or sysctl() that will work. */ unsigned long long Hertz; static void old_Hertz_hack(void){ unsigned long long user_j, nice_j, sys_j, other_j; /* jiffies (clock ticks) */ double up_1, up_2, seconds; unsigned long long jiffies; unsigned h; char *restrict savelocale; savelocale = setlocale(LC_NUMERIC, NULL); setlocale(LC_NUMERIC, "C"); do{ FILE_TO_BUF(UPTIME_FILE,uptime_fd); sscanf(buf, "%lf", &up_1); /* uptime(&up_1, NULL); */ FILE_TO_BUF(STAT_FILE,stat_fd); sscanf(buf, "cpu %Lu %Lu %Lu %Lu", &user_j, &nice_j, &sys_j, &other_j); FILE_TO_BUF(UPTIME_FILE,uptime_fd); sscanf(buf, "%lf", &up_2); /* uptime(&up_2, NULL); */ } while((long long)( (up_2-up_1)*1000.0/up_1 )); /* want under 0.1% error */ setlocale(LC_NUMERIC, savelocale); jiffies = user_j + nice_j + sys_j + other_j; seconds = (up_1 + up_2) / 2; h = (unsigned)( (double)jiffies/seconds/smp_num_cpus ); /* actual values used by 2.4 kernels: 32 64 100 128 1000 1024 1200 */ switch(h){ case 9 ... 11 : Hertz = 10; break; /* S/390 (sometimes) */ case 18 ... 22 : Hertz = 20; break; /* user-mode Linux */ case 30 ... 34 : Hertz = 32; break; /* ia64 emulator */ case 48 ... 52 : Hertz = 50; break; case 58 ... 61 : Hertz = 60; break; case 62 ... 65 : Hertz = 64; break; /* StrongARM /Shark */ case 95 ... 105 : Hertz = 100; break; /* normal Linux */ case 124 ... 132 : Hertz = 128; break; /* MIPS, ARM */ case 195 ... 204 : Hertz = 200; break; /* normal << 1 */ case 253 ... 260 : Hertz = 256; break; case 393 ... 408 : Hertz = 400; break; /* normal << 2 */ case 790 ... 808 : Hertz = 800; break; /* normal << 3 */ case 990 ... 1010 : Hertz = 1000; break; /* ARM */ case 1015 ... 1035 : Hertz = 1024; break; /* Alpha, ia64 */ case 1180 ... 1220 : Hertz = 1200; break; /* Alpha */ default: #ifdef HZ Hertz = (unsigned long long)HZ; /* <asm/param.h> */ #else /* If 32-bit or big-endian (not Alpha or ia64), assume HZ is 100. */ Hertz = (sizeof(long)==sizeof(int) || htons(999)==999) ? 100UL : 1024UL; #endif fprintf(stderr, "Unknown HZ value! (%d) Assume %Ld.\n", h, Hertz); } }





[링크 : http://lkml.iu.edu/hypermail/linux/kernel/0401.2/0065.html]

[링크 : http://forum.buffalo.nas-central.org/viewtopic.php?f=18&t=13451]

[링크 : http://procps.sourceforge.net/]

[링크 : https://bugs.launchpad.net/ubuntu/+source/procps/+bug/364656]

[링크 : https://launchpadlibrarian.net/29934773/procps_3.2.7-11ubuntu3.debdiff.gz]

[링크 : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=460331]

    [링크 : https://lkml.org/lkml/2002/2/18/187]


'embeded > ARM' 카테고리의 다른 글

i.mx283 부팅모드  (0) 2015.01.09
freescale imx283 boot error code  (0) 2015.01.07
크로스 컴파일 옵션 configure --host  (0) 2014.10.13
iWMMX / iWMMXt - Intel XScale SIMD instructions  (0) 2014.10.08
thumb의 장단점?  (0) 2014.09.29
Posted by 구차니
embeded2014. 12. 23. 22:10

회사에서 이런저런 이유로(?) 검색

일단.. 플래시들은 핀수를 줄이기 위해 BYTE 모드와 WORD 모드가 있는데

BYTE 모드는 21비트 어드레싱

WORD 모드는 20비트 어드레싱을 사용한다.

핀수로는

21 + 8

20 + 16 이라서

실제로는 7핀 정도 밖에 안줄어 들어서 무슨 큰 의미가 있겠냐 마는..



DQ15는 16비트 모드에서는 MSB 인데 8비트 모드에서는 주소의 LSB로 쓰인다.

그런데.. 이렇게만 써있으니 이해가 영 어려운게 사실...


A0–A19 20 addresses

DQ0–DQ14 15 data inputs/outputs

DQ15/A-1 DQ15 (data input/output, word mode), A-1 (LSB address input, byte mode)



섹터의 주소를 보면

바이트 모드에서 FFFF 인게 워드모드에서는 7FFF로

0x1111 1111 과 0x0111 1111 로 MSB가 하나 더 추가 된 주소로 출력되며

16번지 이후 섹터에서는 20비트가 아닌 21 비트로 어드레싱을 하여야만 선택이 가능하게 된다.




[링크 : http://www.spansion.com/Support/Datasheets/S29AL016J_00.pdf]

'embeded' 카테고리의 다른 글

9$ computer C.H.I.P?  (0) 2015.05.27
PowerQUICC  (0) 2015.04.02
mmu와 rtos  (0) 2014.12.10
ltib / rc.conf  (0) 2014.11.24
Z80 M6800  (0) 2014.01.27
Posted by 구차니