'embeded'에 해당되는 글 1387건

  1. 2015.02.02 i.mx515 kernel cross compile
  2. 2015.02.02 i.mx515 SDMA
  3. 2015.01.28 armv7 errata / kernel
  4. 2015.01.28 NEON enabled?
  5. 2015.01.26 armel / armhf
  6. 2015.01.17 stm32 cortex-m3 api / library
  7. 2015.01.12 ltib on ubuntu
  8. 2015.01.10 stm32f103z ?
  9. 2015.01.09 i.mx283 부팅모드
  10. 2015.01.07 freescale imx283 boot error code
embeded/ARM2015. 2. 2. 14:53

별거 없네 -_-a

라고 하지만 일단 칩 벤더 패치 먹이는 것 부터가 일단 난관? ㅋㅋㅋ


$ make distclean

$ make -j8 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- defconfig imx5_defconfig

$ make -j8 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- 



distclean 하면 .config 까지 날아가서 완전 새로 설정해야 한다.
그리고 help는 해당 아키텍쳐에 대해서만 나오니

$ make help

Cleaning targets:

  clean   - Remove most generated files but keep the config and

                    enough build support to build external modules

  mrproper   - Remove all generated files + config + various backup files

  distclean   - mrproper + remove editor backup and patch files


Configuration targets:

  config   - Update current config utilising a line-oriented program

  nconfig         - Update current config utilising a ncurses menu based program

  menuconfig   - Update current config utilising a menu based program

  xconfig   - Update current config utilising a QT based front-end

  gconfig   - Update current config utilising a GTK based front-end

  oldconfig   - Update current config utilising a provided .config as base

  localmodconfig  - Update current config disabling modules not loaded

  localyesconfig  - Update current config converting local mods to core

  silentoldconfig - Same as oldconfig, but quietly, additionally update deps

  randconfig   - New config with random answer to all options

  defconfig   - New config with default answer to all options

  allmodconfig   - New config selecting modules when possible

  allyesconfig   - New config where all options are accepted with yes

  allnoconfig   - New config where all options are answered with no


Other generic targets:

  all   - Build all targets marked with [*]

* vmlinux   - Build the bare kernel

* modules   - Build all modules

  modules_install - Install all modules to INSTALL_MOD_PATH (default: /)

  firmware_install- Install all firmware to INSTALL_FW_PATH

                    (default: $(INSTALL_MOD_PATH)/lib/firmware)

  dir/            - Build all files in dir and below

  dir/file.[oisS] - Build specified target only

  dir/file.lst    - Build specified mixed source/assembly target only

                    (requires a recent binutils and recent build (System.map))

  dir/file.ko     - Build module including final link

  modules_prepare - Set up for building external modules

  tags/TAGS   - Generate tags file for editors

  cscope   - Generate cscope index

  kernelrelease   - Output the release version string

  kernelversion   - Output the version stored in Makefile

  headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH

                    (default: /home/interm/Downloads/linux/linux-2.6.35.3/usr)


Static analysers

  checkstack      - Generate a list of stack hogs

  namespacecheck  - Name space analysis on compiled kernel

  versioncheck    - Sanity check on version.h usage

  includecheck    - Check for duplicate included header files

  export_report   - List the usages of all exported symbols

  headers_check   - Sanity check on exported headers

  headerdep       - Detect inclusion cycles in headers


Kernel packaging:

  rpm-pkg         - Build both source and binary RPM kernel packages

  binrpm-pkg      - Build only the binary kernel package

  deb-pkg         - Build the kernel as an deb package

  tar-pkg         - Build the kernel as an uncompressed tarball

  targz-pkg       - Build the kernel as a gzip compressed tarball

  tarbz2-pkg      - Build the kernel as a bzip2 compressed tarball


Documentation targets:

 Linux kernel internal documentation in different formats:

  htmldocs        - HTML

  pdfdocs         - PDF

  psdocs          - Postscript

  xmldocs         - XML DocBook

  mandocs         - man pages

  installmandocs  - install man pages generated by mandocs

  cleandocs       - clean all generated DocBook files


Architecture specific targets (x86):

* bzImage      - Compressed kernel image (arch/x86/boot/bzImage)

  install      - Install kernel using

                  (your) ~/bin/installkernel or

                  (distribution) /sbin/installkernel or

                  install to $(INSTALL_PATH) and run lilo

  fdimage      - Create 1.4MB boot floppy image (arch/x86/boot/fdimage)

  fdimage144   - Create 1.4MB boot floppy image (arch/x86/boot/fdimage)

  fdimage288   - Create 2.8MB boot floppy image (arch/x86/boot/fdimage)

  isoimage     - Create a boot CD-ROM image (arch/x86/boot/image.iso)

                  bzdisk/fdimage*/isoimage also accept:

                  FDARGS="..."  arguments for the booted kernel

                  FDINITRD=file initrd for the booted kernel


  i386_defconfig           - Build for i386

  x86_64_defconfig         - Build for x86_64


  make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build

  make V=2   [targets] 2 => give reason for rebuild of target

  make O=dir [targets] Locate all output files in "dir", including .config

  make C=1   [targets] Check all c source with $CHECK (sparse by default)

  make C=2   [targets] Force check of all c source with $CHECK


Execute "make" or "make all" to build all targets marked with [*] 

For further info see the ./README file 


아키텍쳐를 정해주면 해당 아키텍쳐에 대한 설정이 쭈욱 나온다.

imx5_defconfig 외에는 되는게 없네 -_-

$ make help ARCH=arm

Cleaning targets:

  clean  - Remove most generated files but keep the config and

                    enough build support to build external modules

  mrproper  - Remove all generated files + config + various backup files

  distclean  - mrproper + remove editor backup and patch files


Configuration targets:

  config  - Update current config utilising a line-oriented program

  nconfig         - Update current config utilising a ncurses menu based program

  menuconfig  - Update current config utilising a menu based program

  xconfig  - Update current config utilising a QT based front-end

  gconfig  - Update current config utilising a GTK based front-end

  oldconfig  - Update current config utilising a provided .config as base

  localmodconfig  - Update current config disabling modules not loaded

  localyesconfig  - Update current config converting local mods to core

  silentoldconfig - Same as oldconfig, but quietly, additionally update deps

  randconfig  - New config with random answer to all options

  defconfig  - New config with default answer to all options

  allmodconfig  - New config selecting modules when possible

  allyesconfig  - New config where all options are accepted with yes

  allnoconfig  - New config where all options are answered with no


Other generic targets:

  all  - Build all targets marked with [*]

* vmlinux  - Build the bare kernel

* modules  - Build all modules

  modules_install - Install all modules to INSTALL_MOD_PATH (default: /)

  firmware_install- Install all firmware to INSTALL_FW_PATH

                    (default: $(INSTALL_MOD_PATH)/lib/firmware)

  dir/            - Build all files in dir and below

  dir/file.[oisS] - Build specified target only

  dir/file.lst    - Build specified mixed source/assembly target only

                    (requires a recent binutils and recent build (System.map))

  dir/file.ko     - Build module including final link

  modules_prepare - Set up for building external modules

  tags/TAGS  - Generate tags file for editors

  cscope  - Generate cscope index

  kernelrelease  - Output the release version string

  kernelversion  - Output the version stored in Makefile

  headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH

                    (default: /home/interm/Downloads/linux/linux-2.6.35.3/usr)


Static analysers

  checkstack      - Generate a list of stack hogs

  namespacecheck  - Name space analysis on compiled kernel

  versioncheck    - Sanity check on version.h usage

  includecheck    - Check for duplicate included header files

  export_report   - List the usages of all exported symbols

  headers_check   - Sanity check on exported headers

  headerdep       - Detect inclusion cycles in headers


Kernel packaging:

  rpm-pkg         - Build both source and binary RPM kernel packages

  binrpm-pkg      - Build only the binary kernel package

  deb-pkg         - Build the kernel as an deb package

  tar-pkg         - Build the kernel as an uncompressed tarball

  targz-pkg       - Build the kernel as a gzip compressed tarball

  tarbz2-pkg      - Build the kernel as a bzip2 compressed tarball


Documentation targets:

 Linux kernel internal documentation in different formats:

  htmldocs        - HTML

  pdfdocs         - PDF

  psdocs          - Postscript

  xmldocs         - XML DocBook

  mandocs         - man pages

  installmandocs  - install man pages generated by mandocs

  cleandocs       - clean all generated DocBook files


Architecture specific targets (arm):

* zImage        - Compressed kernel image (arch/arm/boot/zImage)

  Image         - Uncompressed kernel image (arch/arm/boot/Image)

* xipImage      - XIP kernel image, if configured (arch/arm/boot/xipImage)

  uImage        - U-Boot wrapped zImage

  bootpImage    - Combined zImage and initial RAM disk

                  (supply initrd image via make variable INITRD=<path>)

  install       - Install uncompressed kernel

  zinstall      - Install compressed kernel

                  Install using (your) ~/bin/installkernel or

                  (distribution) /sbin/installkernel or

                  install to $(INSTALL_PATH) and run lilo


  acs5k_defconfig          - Build for acs5k

  acs5k_tiny_defconfig     - Build for acs5k_tiny

  afeb9260_defconfig       - Build for afeb9260

  am200epdkit_defconfig    - Build for am200epdkit

  am3517_evm_defconfig     - Build for am3517_evm

  ams_delta_defconfig      - Build for ams_delta

  ap4evb_defconfig         - Build for ap4evb

  assabet_defconfig        - Build for assabet

  at572d940hfek_defconfig  - Build for at572d940hfek

  at91cap9adk_defconfig    - Build for at91cap9adk

  at91rm9200dk_defconfig   - Build for at91rm9200dk

  at91rm9200ek_defconfig   - Build for at91rm9200ek

  at91sam9260ek_defconfig  - Build for at91sam9260ek

  at91sam9261ek_defconfig  - Build for at91sam9261ek

  at91sam9263ek_defconfig  - Build for at91sam9263ek

  at91sam9g20ek_defconfig  - Build for at91sam9g20ek

  at91sam9rlek_defconfig   - Build for at91sam9rlek

  ateb9200_defconfig       - Build for ateb9200

  badge4_defconfig         - Build for badge4

  bcmring_defconfig        - Build for bcmring

  cam60_defconfig          - Build for cam60

  carmeva_defconfig        - Build for carmeva

  cerfcube_defconfig       - Build for cerfcube

  cm_t35_defconfig         - Build for cm_t35

  cm_x2xx_defconfig        - Build for cm_x2xx

  cm_x300_defconfig        - Build for cm_x300

  cns3420vb_defconfig      - Build for cns3420vb

  colibri_pxa270_defconfig - Build for colibri_pxa270

  colibri_pxa300_defconfig - Build for colibri_pxa300

  collie_defconfig         - Build for collie

  corgi_defconfig          - Build for corgi

  cpu9260_defconfig        - Build for cpu9260

  cpu9g20_defconfig        - Build for cpu9g20

  cpuat91_defconfig        - Build for cpuat91

  csb337_defconfig         - Build for csb337

  csb637_defconfig         - Build for csb637

  da8xx_omapl_defconfig    - Build for da8xx_omapl

  davinci_all_defconfig    - Build for davinci_all

  devkit8000_defconfig     - Build for devkit8000

  dove_defconfig           - Build for dove

  ebsa110_defconfig        - Build for ebsa110

  ecbat91_defconfig        - Build for ecbat91

  edb7211_defconfig        - Build for edb7211

  em_x270_defconfig        - Build for em_x270

  ep93xx_defconfig         - Build for ep93xx

  eseries_pxa_defconfig    - Build for eseries_pxa

  ezx_defconfig            - Build for ezx

  footbridge_defconfig     - Build for footbridge

  fortunet_defconfig       - Build for fortunet

  g3evm_defconfig          - Build for g3evm

  g4evm_defconfig          - Build for g4evm

  h3600_defconfig          - Build for h3600

  h5000_defconfig          - Build for h5000

  h7201_defconfig          - Build for h7201

  h7202_defconfig          - Build for h7202

  hackkit_defconfig        - Build for hackkit

  htcherald_defconfig      - Build for htcherald

  igep0020_defconfig       - Build for igep0020

  imote2_defconfig         - Build for imote2

  imx23evk_defconfig       - Build for imx23evk

  imx23evk_updater_defconfig - Build for imx23evk_updater

  imx25_3stack_defconfig   - Build for imx25_3stack

  imx25_updater_defconfig  - Build for imx25_updater

  imx28evk_defconfig       - Build for imx28evk

  imx28evk_updater_defconfig - Build for imx28evk_updater

  imx5_defconfig           - Build for imx5

  imx5_updater_defconfig   - Build for imx5_updater

  integrator_defconfig     - Build for integrator

  iop13xx_defconfig        - Build for iop13xx

  iop32x_defconfig         - Build for iop32x

  iop33x_defconfig         - Build for iop33x

  ixp2000_defconfig        - Build for ixp2000

  ixp23xx_defconfig        - Build for ixp23xx

  ixp4xx_defconfig         - Build for ixp4xx

  jornada720_defconfig     - Build for jornada720

  kafa_defconfig           - Build for kafa

  kb9202_defconfig         - Build for kb9202

  kirkwood_defconfig       - Build for kirkwood

  ks8695_defconfig         - Build for ks8695

  lart_defconfig           - Build for lart

  loki_defconfig           - Build for loki

  lpd270_defconfig         - Build for lpd270

  lpd7a400_defconfig       - Build for lpd7a400

  lpd7a404_defconfig       - Build for lpd7a404

  lubbock_defconfig        - Build for lubbock

  lusl7200_defconfig       - Build for lusl7200

  magician_defconfig       - Build for magician

  mainstone_defconfig      - Build for mainstone

  mini2440_defconfig       - Build for mini2440

  mmp2_defconfig           - Build for mmp2

  msm_defconfig            - Build for msm

  mv78xx0_defconfig        - Build for mv78xx0

  mx1_defconfig            - Build for mx1

  mx21_defconfig           - Build for mx21

  mx27_defconfig           - Build for mx27

  mx31pdk_defconfig        - Build for mx31pdk

  mx3_defconfig            - Build for mx3

  mx3_updater_defconfig    - Build for mx3_updater

  mx51_defconfig           - Build for mx51

  n770_defconfig           - Build for n770

  n8x0_defconfig           - Build for n8x0

  neocore926_defconfig     - Build for neocore926

  neponset_defconfig       - Build for neponset

  netwinder_defconfig      - Build for netwinder

  netx_defconfig           - Build for netx

  nhk8815_defconfig        - Build for nhk8815

  ns9xxx_defconfig         - Build for ns9xxx

  nuc910_defconfig         - Build for nuc910

  nuc950_defconfig         - Build for nuc950

  nuc960_defconfig         - Build for nuc960

  omap_2430sdp_defconfig   - Build for omap_2430sdp

  omap_3430sdp_defconfig   - Build for omap_3430sdp

  omap_3630sdp_defconfig   - Build for omap_3630sdp

  omap3_beagle_defconfig   - Build for omap3_beagle

  omap3_defconfig          - Build for omap3

  omap3_evm_defconfig      - Build for omap3_evm

  omap3_pandora_defconfig  - Build for omap3_pandora

  omap3_stalker_lks_defconfig - Build for omap3_stalker_lks

  omap3_touchbook_defconfig - Build for omap3_touchbook

  omap_4430sdp_defconfig   - Build for omap_4430sdp

  omap_apollon_2420_defconfig - Build for omap_apollon_2420

  omap_generic_1510_defconfig - Build for omap_generic_1510

  omap_generic_1610_defconfig - Build for omap_generic_1610

  omap_generic_1710_defconfig - Build for omap_generic_1710

  omap_generic_2420_defconfig - Build for omap_generic_2420

  omap_h2_1610_defconfig   - Build for omap_h2_1610

  omap_h4_2420_defconfig   - Build for omap_h4_2420

  omap_innovator_1510_defconfig - Build for omap_innovator_1510

  omap_innovator_1610_defconfig - Build for omap_innovator_1610

  omap_ldp_defconfig       - Build for omap_ldp

  omap_osk_5912_defconfig  - Build for omap_osk_5912

  omap_perseus2_730_defconfig - Build for omap_perseus2_730

  omap_zoom2_defconfig     - Build for omap_zoom2

  omap_zoom3_defconfig     - Build for omap_zoom3

  onearm_defconfig         - Build for onearm

  orion5x_defconfig        - Build for orion5x

  overo_defconfig          - Build for overo

  palmte_defconfig         - Build for palmte

  palmtt_defconfig         - Build for palmtt

  palmz71_defconfig        - Build for palmz71

  palmz72_defconfig        - Build for palmz72

  pcm027_defconfig         - Build for pcm027

  picotux200_defconfig     - Build for picotux200

  pleb_defconfig           - Build for pleb

  pnx4008_defconfig        - Build for pnx4008

  pxa168_defconfig         - Build for pxa168

  pxa255-idp_defconfig     - Build for pxa255-idp

  pxa3xx_defconfig         - Build for pxa3xx

  pxa910_defconfig         - Build for pxa910

  qil-a9260_defconfig      - Build for qil-a9260

  raumfeld_defconfig       - Build for raumfeld

  realview_defconfig       - Build for realview

  realview-smp_defconfig   - Build for realview-smp

  rpc_defconfig            - Build for rpc

  rx51_defconfig           - Build for rx51

  s3c2410_defconfig        - Build for s3c2410

  s3c6400_defconfig        - Build for s3c6400

  s5p6440_defconfig        - Build for s5p6440

  s5p6442_defconfig        - Build for s5p6442

  s5pc100_defconfig        - Build for s5pc100

  s5pc110_defconfig        - Build for s5pc110

  s5pv210_defconfig        - Build for s5pv210

  sam9_l9260_defconfig     - Build for sam9_l9260

  shannon_defconfig        - Build for shannon

  shark_defconfig          - Build for shark

  simpad_defconfig         - Build for simpad

  spear300_defconfig       - Build for spear300

  spear310_defconfig       - Build for spear310

  spear320_defconfig       - Build for spear320

  spear600_defconfig       - Build for spear600

  spitz_defconfig          - Build for spitz

  stamp9g20_defconfig      - Build for stamp9g20

  stmp378x_defconfig       - Build for stmp378x

  stmp37xx_defconfig       - Build for stmp37xx

  sx1_defconfig            - Build for sx1

  tct_hammer_defconfig     - Build for tct_hammer

  trizeps4_defconfig       - Build for trizeps4

  u300_defconfig           - Build for u300

  u8500_defconfig          - Build for u8500

  usb-a9260_defconfig      - Build for usb-a9260

  usb-a9263_defconfig      - Build for usb-a9263

  versatile_defconfig      - Build for versatile

  viper_defconfig          - Build for viper

  xcep_defconfig           - Build for xcep

  yl9200_defconfig         - Build for yl9200

  zeus_defconfig           - Build for zeus


  make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build

  make V=2   [targets] 2 => give reason for rebuild of target

  make O=dir [targets] Locate all output files in "dir", including .config

  make C=1   [targets] Check all c source with $CHECK (sparse by default)

  make C=2   [targets] Force check of all c source with $CHECK


Execute "make" or "make all" to build all targets marked with [*] 

For further info see the ./README file


$ make -j8 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage

  CHK     include/linux/version.h

  CHK     include/generated/utsrelease.h

make[1]: `include/generated/mach-types.h' is up to date.

  CALL    scripts/checksyscalls.sh

  CHK     include/generated/compile.h

  Kernel: arch/arm/boot/Image is ready

  SHIPPED arch/arm/boot/compressed/lib1funcs.S

  AS      arch/arm/boot/compressed/lib1funcs.o

  LD      arch/arm/boot/compressed/vmlinux

  OBJCOPY arch/arm/boot/zImage

  Kernel: arch/arm/boot/zImage is ready

  UIMAGE  arch/arm/boot/uImage

"mkimage" command not found - U-Boot images will not be built

  Image arch/arm/boot/uImage is ready 


$ mkimage

The program 'mkimage' is currently not installed. You can install it by typing:

sudo apt-get install u-boot-tools


$ sudo apt-get install u-boot-tools


기본으로는 zImage와 Image가 생성되며

uImage는 커널 컴파일시에 uImage로 해야 생성이 된다.



linux-2.6.35.3/arch/arm/boot$ file *Image

Image:  data

uImage: u-boot legacy uImage, Linux-2.6.35.3, Linux/ARM, OS Kernel Image (Not compressed), 2985820 bytes, Sun Feb  1 22:33:13 2015, Load Address: 0x70008000, Entry Point: 0x70008000, Header CRC: 0x0A03D97E, Data CRC: 0x99B88B34

zImage: Linux kernel ARM boot executable zImage (little-endian)


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

ARM cortex-a8 neon 활성화 체크  (0) 2015.02.02
i.mx515 uboot cross compile  (0) 2015.02.02
i.mx515 SDMA  (0) 2015.02.02
armv7 errata / kernel  (0) 2015.01.28
NEON enabled?  (0) 2015.01.28
Posted by 구차니
embeded/ARM2015. 2. 2. 14:48

SD + MA인가 했는데

S + DMA



programmable smart DMA


[링크 : http://cache.freescale.com/files/32bit/doc/data_sheet/IMX53IEC.pdf]

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

i.mx515 uboot cross compile  (0) 2015.02.02
i.mx515 kernel cross compile  (0) 2015.02.02
armv7 errata / kernel  (0) 2015.01.28
NEON enabled?  (0) 2015.01.28
armel / armhf  (0) 2015.01.26
Posted by 구차니
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 구차니