Your SlideShare is downloading. ×
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Porting a new architecture (NDS32) to open wrt project

1,341

Published on

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,341
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
6
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Porting a New Architecture to OpenWrt Project Macpaul Lin & AndesTech COSCUP 2010/08/15
  • 2. Who am I? ● Macpaul ( 馬克泡 ) ● 林智斌 ● Macpaul <at> gmail.com ● 阿宅 ● 亂入 ● 網路技術 ● 最近對紫微斗數有興趣 ● 下次在 COSCUP 要擺 婚友社攤位 2010/08/15
  • 3. Outline ● Introduction. ● A new RISC architecture – NDS32. ● The framework of OpenWrt build system. ● Porting Items. ● Conclusion. 2010/08/15
  • 4. Introduction What is OpenWrt? ● If you bought a wireless router, you will also buy the following softwares. Ref: http://www.dataweek.co.za/news.aspx?pklNewsId=28298&pklCategoryID=42 2010/08/15
  • 5. Introduction What is OpenWrt? A software framework to build firmware for those wireless routers. 2010/08/15
  • 6. Introduction What is OpenWrt? ● The most popular open source project for networking devices. ● A firmware/package build system (framework) for various kinds of SoC platforms and wireless routers. ● The workgroup of OpenWrt focuses on… ● Analyze the kernel/protocol differences between vendors’ code release and vanilla Linux kernel. ● Maintain the compatible firmware for vendors‘ boot loaders. (CRC, version headers) ● Keep the compatibility with driver binaries. ● Disassembled driver binary. ● Has been embedded in many companies’ successful products. ● It will pull the stable source code of each component from its project's site during compiling time. 2010/08/15
  • 7. Introduction Topic Review. ● OSDC ● Porta2030 @ Taipei – 2007 (Macpaul) ● ICOS ● Porting WiFi router to OpenWrt – 2007 (Macpaul) ● COSCUP ● Router Hacking 101. – 2007 (Rex) ● OpenWrt and Case Study. – 2008 (Rex) ● OpenWRT, A value-add base solution for your product. – 2009 (Rex, Macpaul) ● Porting a New Architecture to OpenWrt Project. – 2010 (Macpaul) ● Co-play ● Porta2030 的未來及未實現 . – 2009 (Rex) ● 自由軟體技術充電站 (OSSF) ● OpenWrt. – 2009 (Macpaul, Rex) ● Computex 2010/08/15 ● Andeswrt: NDS32 is ready for your OpenWrt Products. - 2010 (Macpaul)
  • 8. Introduction The trend of using OpenWrt. ● Community achievement ● Business achievement ● Networking Device Sellers / Manufacturer. (FON) ● ISP. (BT/Tomizone) ● Chip / IP Vendors. (Broadcom/Ubicom/Andes) – All AndesTech CPU licensees for networking SoC use OpenWrt. ● Software Solution Vendor. – (OpenMesh, BATMAN, Savari) 2010/08/15
  • 9. Introduction The trend of using OpenWrt. D D -W R T O p e n W rt DDW RT C zech G e r m a n y , T a iw a n H o n g K o n g , C h in a 2010/08/15
  • 10. Introduction The trend of using OpenWrt. ● OpenWrt Robot ● OpenWrt Gumdam http://www.dd-wrt.com/wiki/index.php/LaFonera_Hardware_Roboter_Controlling http://www.cuhkacs.org/~scli/blog/2007/09/fujiq_gundam_crisis.html 2010/08/15
  • 11. Introduction About the Industry Chain. 回 報 錯 誤 提 出 建 議 回 報 錯 誤 S oC 供 應 商 系 統 整 合 廠 品 牌 廠 消 費 者 自 由 軟 體 社 群 附 加 價 值 廠 商 某 版 本 L in u x K e r n e l 產 品 原 型 販 售 更 新 函 式 庫 生 產 測 試 回 報 錯 誤 開 發 工 具 開 發 驗 證 發 佈 更 新 提 供 新 科 技 更 新 通 訊 協 定 提 升 效 能 及 修 正 錯 誤 補 綴 通 訊 協 定 及 整 合 客 製 化 整 合 第 三 方 軟 體 整 合 廠 商 既 有 軟 體 架 構 O p en W rt 2010/08/15
  • 12. Introduction About the Industry Chain. ● Embedded system hardware level. Hardware System Arch CPU Core SoC And Other IC Most embedded software framework were organized according to different SoC. ● However everything was related to CPU architecture. 2010/08/15
  • 13. A new RISC architecture - NDS32 ● Invented by AndesTech Corporation. ● The innovative configurable platform solution allows Andes’ customers to construct unique system architecture and hardware/software partitioning. ● Andes is invested by ● MediaTek, ● Faraday, ● National Development Fund, ● and other industry heavy weights. 2010/08/15
  • 14. A new RISC architecture – NDS32 National Development Fund ● 第四條 本基金之來源如下: ● 一、中美經濟社會發展基金: – ( 一 ) 前美援項下所衍生之新臺幣資金結餘。 – ( 二 ) 本基金運用後孳生之收益。 – ( 三 ) 本基金運用後之賸餘及其他經核定撥入之款項。 ● 二、開發基金: – ( 一 ) 由政府循預算程序之撥款。 – ( 二 ) 國際開發協會貸款運用後收回之本金及孳息。 – ( 三 ) 本基金之收益。 – ( 四 ) 其他有關收入。 2010/08/15
  • 15. A new RISC architecture - NDS32 ● Provide 3 different CPU core families for customers. 2010/08/15
  • 16. A new RISC architecture - NDS32 ● CPU Core (N9 as example) ● 16/32bit mixable instruction format ● 16 or 32 general-purpose 32-bit registers ● Multiple stage pipeline ● Aligned post-increment load/store single ● Aligned and unaligned load/store multiple ● Vectored interrupts with 6 signals for interrupt sources and 2 runtime options: – the built-in internal interrupt controller for 6 interrupt sources – the external interrupt controller with 64 interrupt sources ● 2 or 3 HW nested interruption levels ● Memory-mapped I/O ● Non-Translated-Mapping (NTM) for cacheability attributes 2010/08/15
  • 17. A new RISC architecture - NDS32 ● Benefit (N9 as example) ● Performance – 16/32bit mixable instruction format for compacting code density – Static branch predication – Low-latency vectored interrupt for real-time performance – Completion of one 32-bit operation per cycle ● Flexibility – Memory-mapped IO space – PC-relative jumps for position independent code – JTAG-based debug support – Support for bi-endian data accesses – Several configurations to trade off between core size and application requirements ● Power Management – Clock-gated pipeline – Power management instructions 2010/08/15
  • 18. A new RISC architecture – NDS32 About the industry chain. N D S 3 2 is h e r e . R ep o rt b u g s, R e q u e st fe a tu r e s R ep ort b u gs S oC V en d or S I /O D M /O E M B ran d V en d or C on su m er O p en S ou rce V a lu e -a d d C o m m u n ity V en d ors L in u x K e r n e l 2 .X .X B S P , P r o to ty p in g , S a le , R ep ort b u gs, U p d a te P r o d u c tio n T o o lc h a in , D e v e lo p m e n t, P r o v id e s R eq u est L ib r a r ie s T e s tin g w ith N e w V e r ific a tio n . U p d a te s. fe a tu r e s T e c h n o lo g y s u p p o r t U p d a te N e tw o r k in g P ro to c o l E n h a n cem en t, N D S 3 2 is h e r e . fix b u g s , u p d a te p a tc h e s N D S 3 2 is h e r e . I n te g r a tio n a n d C u s to m iz a tio n N D S 3 2 is h e r e . In te g r a te 3 r d - P a r ty S o ftw a r e N D S 3 2 is h e r e . I n te g r a te w ith o r ig in a l S o ftw a r e A r c h . O p en W rt 2010/08/15
  • 19. The framework of OpenWrt build system. ● Architectures ● Target ● Target ● Imagebuilder ● Toolchain ● Linux ● Tools – Generic Kernel ● Scripts – SoC ● Kernel versions ● Package ● Kernel patches ● Include ● Profiles ● System files ● Image formats ● SDK ● Toolchain 2010/08/15
  • 20. The framework of OpenWrt build system. ● Toolchain ● Tools ● binutils ● autotools ● eglibc/glibc/uClibc ● ccache ● gcc/llvm ● lzma ● gdb/insight ● squashfs/ext3/ext2/ yaffs ● ipkg ● sed ● etc. 2010/08/15
  • 21. The framework of OpenWrt build system. ● Include ● $ARCH as $LINUX_KARCH for kernel. ● $DEFAULT_CFLAGS for $ARCH. ● Endian type for $ARCH. ● Data types in include/site/* for autotools. ● Scripts ● For maintaining system-wide tools and definitions. 2010/08/15
  • 22. The framework of OpenWrt build system. Benefits - Flexibility. ● Flexibility ● You can use your customized toolchain to develop your network products. – External Toolchain. – Customized toolchain patches. ● You can use customized Linux kernel (usually from chip vendors) and drivers to develop your network products. – External kernel source tree. – Customized kernel patches. ● You can add your applications to customize your network products. 2010/08/15
  • 23. The framework of OpenWrt build system. Benefits - Flexibility. ● 2 Ways To Develop OpenWrt with NDS32 Architecture. ● AndesWrt with pre-build external toolchain to build NDS32 based OpenWrt Firmware – Very easy to use. – Has been verified by… ● BSP 2.1.0 – Kernel 2.6.29, Gcc 3, glibc / uClibc ● AndeSight 1.4.0 – Kernel 2.6.29, Gcc 3, glibc / uClibc ● NDS32 Architecture is also supported for OpenWrt main trunk to build your own NDS32 based toolchain. – Has been verified by… ● Kernel 2.6.29, ● binutils 2.19.1 ● Gcc 4.4.3 ● uClibc 0.9.30.2 2010/08/15
  • 24. Porting Items. ● Definitions in OpenWrt framework. ● toolchain – gcc, uClibc, binutil ● target – NDS32 Linux Kernel, ADP-AG101 ● autotool data type – include/site ● u-boot ● busybox ● and other libraries and applications as well. 2010/08/15
  • 25. Porting Items. ● include/kernel.mk | 2 +- ● include/site/nds32-linux | 30 + ● include/site/nds32-openwrt-linux-gnu | 5 + ● include/site/nds32-openwrt-linux-uclibc | 5 + ● include/site/nds32eb-linux | 30 + ● include/site/nds32eb-linux-openwrt-linux-gnu | 5 + ● include/site/nds32eb-linux-openwrt-linux-uclibc | 5 + ● include/target.mk | 2 + ● scripts/config.sub | 2 + ● target/Config.in | 9 + ● target/linux/adpxc5/Makefile | 27 + ● target/linux/adpxc5/base-files.mk | 5 + ● .../base-files/etc/defconfig/generic/network | 16 + ● target/linux/adpxc5/config-2.6.29 | 242 + ● target/linux/adpxc5/config-2.6.32 | 216 + ● target/linux/adpxc5/image/Makefile | 210 + ● .../adpxc5/patches-2.6.29/001-uImage_support.patch | 35 + ● .../002-nds32_2_6_29_gcc4_support.patch | 60 + ● target/linux/generic-2.6/config-2.6.29 | 2343 + ● .../000-nds32_arch_basic_2_6_29.patch |74781 +++++++++ ● .../2.19.1/802-Add-nds32-target-support.patch |169128 ++++++++++++++++++++ ● ...utils-2.19.1-from-binutils-2.15-in-v1.4-t.patch | 2143 + ● .../patches/2.19.1/804-Add-nds32-cgen.patch | 5945 + ● toolchain/gcc/Config.in | 2 + ● toolchain/gcc/Config.version | 1 + ● .../gcc/patches/4.4.3/995-nds32_support.patch |26078 +++ ● toolchain/uClibc/Config.version | 3 + ● toolchain/uClibc/Makefile | 2 + ● toolchain/uClibc/config-0.9.30.2/common | 1 + ● toolchain/uClibc/config-0.9.30.2/nds32 | 74 + ● toolchain/uClibc/config-0.9.30.2/nds32eb | 74 + ● .../patches-0.9.30.2/800-nds32_support.patch | 7778 + 2010/08/15tools/mkimage/Makefile ● | 5 +-
  • 26. Porting Items. Toolchains. ● Add NDS32 architecture related definitions and dependency into Config.in. ● Make modularized patches and default configurations. ● Make the diff (patch) from git repository according to the stable release. ● Binutils ● uClibc ● gcc 2010/08/15
  • 27. Porting Items. Target. ● Add SoC (AG101) directory. ● Add Profile (model) related files. ● Setup default configuration of kernel. ● Add architecture specific kernel patches. ● Make patch (git diff) according to a specific stable release version. 2010/08/15
  • 28. Porting Items. Kernel. ● Setup default configuration for generic kernel. ● Setup default configuration for architecture related codes. ● Add architecture related patches into the patch set. ● Make patch (git diff) according to a specific stable release version. 2010/08/15
  • 29. Porting Items. ● Release early, release often. int maintain_patch; while (porting_done()) { if (commit ()) break; else { other_patches_coming (); fix_patch(); maintain_patch(); maintain_patch++; delay_schedule(); } } ● Commit patches to the most root open source projects. 2010/08/15
  • 30. Porting Items. U-boot. ● Mailing list: u-boot@lists.denx.de ● The custodian system. ● http://www.denx.de/wiki/U-Boot/CustodianGitTrees 2010/08/15
  • 31. Porting Items. U-boot. ● Mailing list: u-boot@lists.denx.de ● The custodian system. ● http://www.denx.de/wiki/U-Boot/CustodianGitTrees http://www.toei-anim.co.jp/sp/seiya/ 2010/08/15
  • 32. Porting Items. U-boot. ● Current we are fixing Patch v3. 2010/08/15
  • 33. Porting Items. U-boot. ● The framework of u-boot. ● Codes are classified into multiple levels, – Architectures, Cores, SoC, Board, Models, company. ● arch – cpu (init asm), include, lib (board). ● api ● common – common commands. ● board – evb or products. ● drivers – peripheral drivers. ● includes – configs and other include headers. ● examples/standalone 2010/08/15
  • 34. Conclusion 2010/08/15
  • 35. Conclusion Never live demo. ● 2010/08/15
  • 36. Conclusion ● However, once the component of OpenWrt evolved to a new version, we will need to re- generate the corresponding patches again. ● Do the right things first, then do the things right. ● If you do not commit the source code into the mainline open source projects, you will suffer pain when maintaining patches for your customers. 2010/08/15
  • 37. Conclusion Next Summer! NDS32 RISC CPU with GPU SoC! 2010/08/15
  • 38. Conclusion To build a Gundam with NDS32 inside is nothing. 做一台有 NDS32 CPU 的剛彈不算什麼。 Only one person can drive the Gundam. 只有一個人可以駕駛剛彈。 2010/08/15
  • 39. Conclusion To build a Ubuntu (debain) distribution with NDS32 is something. Everyone can use it. 2010/08/15
  • 40. Conclusion ● AndesTech provides Andes Open Source SDK. ● http://osdk.andestech.com/ – QEMU – Kernel – Toolchain 2010/08/15
  • 41. Advertisement ● NDS32 architecture powered by Andes is ready for your OpenWrt products. ● If you are interested, Please contact our sales or HR… Andes Technology Corporation 2F, No.1, Li-Hsin First Road, Science-Based Industrial Park, Hsin-Chu City, Taiwan 300 R.O.C (SiSoft Research Center) Tel: +886-3-6668300 Fax: +886-3-6668322 Business : sales@andestech.com Technical : support@andestech.com 2010/08/15
  • 42. Copyrights ● All the Logo and trademarks belongs to ● AndesTech Corporation. 2010/08/15

×