# Octeon III Guide for setting up wolfSSL on the Octeon III CN7300 ## Octeon SDK ```sh sudo yum install libuuid-devel sudo yum install perl-Env sudo rpm -i OCTEON-SDK-5.1.0-609.x86_64.rpm ``` The OCTEON-SDK package has been successfully installed under the /usr/local/Cavium_Networks directory. The installation requires the OCTEON_MODEL environment variable to be set. To set this environment variable, cd to the /usr/local/Cavium_Networks/OCTEON-SDK directory, and invoke source env-setup script. Valid OCTEON_MODELs are listed in octeon-models.txt file under OCTEON-SDK directory. You may want to copy the OCTEON-SDK package to your home directory to allow modification without root privileges. For more information please refer to the online SDK documentation: file:///usr/local/Cavium_Networks/OCTEON-SDK/docs/html/index.html ```sh sudo rpm -i OCTEON-CRYPTO-CORE-5.1.0-01.x86_64.rpm ``` The OCTEON-CRYPTO-CORE is installed under /usr/local/Cavium_Networks/OCTEON-SDK/components/crypto-api/core directory. This package installs the following sources. * Crypto-Core API Sources * Sample Crypto-Core Test Applications Please refer to following documentation under /usr/local/Cavium_Networks/OCTEON-SDK/components/crypto-api/core directory * README.txt - contains build instructions and other details * Release_Notes.txt - contains change history ```sh sudo rpm -i OCTEON-LINUX-5.1.0-609.x86_64.rpm ``` The Linux Kernel has been successfully installed under the directory /usr/local/Cavium_Networks/OCTEON-SDK/linux Please refer to file:///usr/local/Cavium_Networks/OCTEON-SDK/docs/html/linux.html on how to use Linux on the OCTEON. Final Setup: ```sh cp -r /usr/local/Cavium_Networks/OCTEON-SDK/ ~ cd OCTEON-SDK source env-setup OCTEON_CN73XX cd examples make ``` Setup for CN73XX board EVB7304 ```sh setenv qlm2_mode pcie setenv pcie2_mode ep setenv pcie2_gen 2 setenv pcie2_lanes 4 setenv qlm2_mode sgmii setenv qlm4_mode sata #setenv ethact octeth0 #setenv ethprime octeth0 dhcp saveenv ``` ## Building bootloader ```sh # On Host cd OCTEON-SDK/bootloader/u-boot make distclean make octeon_ebb7304 make cp *.bin /mnt/cf1 # On Target fatls mmc 1 fatload mmc 1 $(loadaddr) u-boot-octeon_ebb7304.bin bootloadervalidate bootloaderupdate ``` Note: You must run `source env-setup OCTEON_CN73XX` anytime a new shell is opened to setup the build environment. ## Building Linux Kernel (Busybox) ```sh # On Host su root cd OCTEON-SDK source env-setup OCTEON_CN73XX cd linux make clean cd embedded_rootfs make menuconfig cd .. make kernel make strip cp ./kernel/linux/vmlinux.64 /mnt/cf1 ``` ```sh # On Target telnet 192.168.0.114 9761 fatls mmc 1 fatload mmc 1 $(loadaddr) vmlinux.64 bootoctlinux $(loadaddr) coremask=0xffff root=/dev/sda2 mem=0 ``` Shortcut macro from U-Boot: ```sh # On Target setenv linux_mmc 'fatload mmc 1 $(loadaddr) vmlinux.64;bootoctlinux $(loadaddr) coremask=0xffff root=/dev/sda2 mem=0' run linux_mmc saveenv ``` ## Building Linux Debian ```sh su root cd OCTEON-SDK source env-setup OCTEON_CN73XX cd linux make kernel-deb # Identify external /dev/sd* fdisk -l # Edit /etc/fstab. Replace "sda" with the device name determined from above. /dev/sdb1 /mnt/cf1 auto noauto,noatime,user 0 0 /dev/sdb2 /mnt/cf2 ext3 noauto,noatime,user 0 0 mkdir -p /mnt/cf1 mkdir -p /mnt/cf2 cd debian make DISK=/dev/sdb compact-flash cd .. make kernel-deb flash usb start fatls usb 0 fatload usb 0 $(loadaddr) vmlinux.64 fatls mmc 0 fatload mmc 0 $(loadaddr) vmlinux.64 bootoctlinux $(loadaddr) coremask=0xffff root=/dev/mmcblk0p2 mem=0 rootdelay=5 ``` ### Setting up default boot ```sh setenv bootcmd 'fatload mmc 0 $(loadaddr) vmlinux.64; bootoctlinux $(loadaddr) coremask=0xffff root=/dev/mmcblk0p2 mem=0 rootdelay=5' saveenv reset ``` ### Debian Packages ```sh vi /etc/sources.list deb http://archive.debian.org/debian/ jessie main contrib non-free deb-src http://archive.debian.org/debian/ jessie main contrib non-free #deb-src http://archive.debian.org/ jessie/updates main contrib non-free #deb http://archive.debian.org/ jessie/updates main contrib non-free ``` ## wolfSSL Building for Octeon ```sh cd examples ln -s ../../wolfssl wolfssl cd wolfssl ./autogen.sh ./configure --host=mips64 CC="mips64-octeon-linux-gnu-gcc -mabi=64" \ --with-octeon-sync=../OCTEON-SDK OCTEON_OBJ=obj-octeon3 \ --enable-cryptocb --enable-des3 CPPFLAGS="-DWOLFSSL_AES_DIRECT" \ CFLAGS="-Wno-error=redundant-decls" make ``` Installing to USB media for use on Octeon Board: ```sh cp -r src /run/media/dgarske/OCTEON/ cp -r wolfcrypt/ /run/media/dgarske/OCTEON/ cp -r wolfssl /run/media/dgarske/OCTEON/ cp -r certs /run/media/dgarske/OCTEON/ ``` ## Remote Access ### UART and Telnet EBB7304_DEFAULT D8-80-39-7D-6D-0B telnet 192.168.0.114 9760 telnet 192.168.0.114 9761 date 070216502019 ## Support For questions please email wolfSSL at support@wolfssl.com