顯示具有 作業系統 標籤的文章。 顯示所有文章
顯示具有 作業系統 標籤的文章。 顯示所有文章

2024/12/25

U-boot 常用指令


U-boot是在Embeded Linux的設備用來開機時boot loader (類似桌機上BIOS的角色)

一般來說公板給的U-Boot都可以把板子帶起來,並且做一些基本的測試

以下是我常會用到指令

 printenv			//顯示目前設定的參數
 setenv ipaddr 192.168.1.99	//設定ip為192.168.1.99
 saveenv                        //將參數存到Flash
 reset	                        //重啟設備
 md 0x22000000	                //顯示0x22000000記憶體的內容
 mm/nm/mw		        //修改0xXXXXXXXX記憶體的內容
 sf read 0x22000000 0x200000 0x600000
 fdt addr 0x21000000            //將0x21000000的記憶體內容載入到dts中
 fdt print	                //將device tree的內容顯示出來
 gpio status -a	                //查看所有gpio的狀態
 gpio set XX		        //將XX的gpio設定為high
 gpio clear XX	                //將XX的gpio設定為low

 --- 上傳DTS並寫入到SPI flash中 ---
 tftp zonda_ii.dtb
 sf probe 0
 sf erase 0x120000 0x20000
 sf write 0x22000000 0x120000 0x20000

 --- sam9x60 RamDisk開機 ---
 tftp xxx-uImage
 sf probe 0
 sf read 0x21000000 0x120000 0x20000 
 bootm 0x22000000-0x21000000

 --- nuc980 RamDisk開機 ---
 tftp nuc980.bin
 bootm 0xe0000
以下是常用的UBoot的變數
  • ipaddr : 設備的IP address
  • serverip : TFTP server的IP address
  • etheraddr : 設備的MAC address
  • bootcmd : 開機進linux所要執行的指令
  • bootdelay : 等待進入U-Boot的時間

2022/09/04

Advantech WISE-PaaS 2.0 – Edge Intelligence 簡介

WISE-PaaS 2.0 是我們公司推行的雲端與邊緣運算整合架構,涵蓋從設備端到雲端的平台服務,支援各種工業應用與智慧製造需求。雖然是一個龐大的系統,但可以從四大部分來理解:


1. Edge Intelligence(邊緣智慧)

Edge Intelligence 指的是安裝在設備端的智慧軟體,讓設備能在本地進行資料處理與智能決策。核心模組包括:

  • WebAccess 系列

    • WebAccess

    • WebAccess/SCADA

    • WebAccess/tagLink

    • WebAccess/MCM

    • WebAccess/CNC

    • WebAccess/HMI

    • WebAccess/NMS

  • WISE-PaaS 系列

    • EdgeSense:邊緣感測與分析

    • RMM:遠端設備管理

    • OTA:韌體遠端更新

    • Security:設備與資料安全

    • VideoSense:影像分析與智慧監控

透過 Edge Intelligence,設備不僅能即時收集資料,還能進行初步分析與決策,減少對雲端依賴並提升反應速度。


2. IaaS(Infrastructure as a Service)

  • 提供基礎運算與儲存資源

  • 支援大規模資料處理、虛擬化與雲端運算

  • 讓工業應用能在雲端靈活部署,並保證穩定性與擴展性


3. PaaS(Platform as a Service)

  • 提供開發與管理平台,讓應用開發更高效

  • 提供 API、資料庫、資料流處理與安全管理等功能

  • 適合快速建置 IoT 與工業自動化應用


4. Industrial APPs (SRPs)

  • SRPs(Solution Ready Packages)為工業應用套件

  • 包含各種垂直場景的解決方案

  • 開發者可快速整合 Edge Intelligence 與雲端 PaaS,部署到特定工業場景


小結

WISE-PaaS 2.0 將 Edge Intelligence、IaaS、PaaS 與 Industrial APPs 緊密結合,形成完整的工業雲端架構。

  • 設備端:Edge Intelligence 實現本地資料分析與管理

  • 基礎架構:IaaS 提供穩定運算與儲存資源

  • 平台服務:PaaS 支援開發與資料管理

  • 工業應用:SRPs 提供快速部署的解決方案

總結來說,WISE-PaaS 2.0 是一個從設備到雲端的整合平台,讓智慧製造與工業 IoT 可以更快速、可靠地落地。



2020/02/17

Azure SDK? Azure IoT SDK? Azure IoT Edge?


最近公司的4G router與 LoRaWAN Gateway被問Azure SDK支援的問題
趁這個時候把這些SDK釐清一下

  • Azure SDK : 主要是用在開發雲端的應用軟體與網頁服務。

  • Azure IoT SDK : 可以用在Device開發,將Device上的資料上傳到Azure雲端服務上。
    • Device SDK : 用來開發在device上的,有C的source code
    • Service SDK : 用在IoT Hub的雲端環境上 

  • Azure IoT Edge : 指能在設備中做Edge Computing的功能,讓更多AI的功能(串流分析、機器學習、認知服務)在Edge端的設備處理。可以在Edge端快速的執行異常偵測或降低雲端的頻寬使用率。分為下面三個主要的元件
    • IoT Edge modules : 用來執行Azure  software的container (Docker),用來佈署到IoT Edge的裝置中
    • IoT Edge run-times : 在IoT Edge裝置上執行Azure software
    • IoT Edge cloud interface : 監視、管理IoT Edge的裝置

    • 布建的步驟如下
    1. 在Azure上建立自己的IoT Hub (之後要用來監控IoT Edge的狀態)
    2. 在IoT Hub中註冊IoT Edge裝置
    3. 在IoT Edge裝置中安裝並執行IoT Edge runtime,必須安裝:container runtime environment與IoT Edge runtime environment
    4. 將Module(Azure的商業邏輯)由Azure Cloud 部署到IoT Edge的裝置中



2013/07/21

library 實作範例 ...


之前有一篇文章再介紹library
有興趣的朋友可以點上述的連結去了解
這邊用個簡單的範例來說明
首先我們先建立一個test的執行檔
# vim main.c
  #include <stdio.h>
  int main()
  {
    printf("Hello world!!!\n");
    return 0;
  }
# gcc main.c -o test
這時我們會有一個test的執行檔
這個執行檔的大小是4642

接著我們使用file來看看這個執行檔的資訊
# file test
test: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, not stripped
可以從上面的描述得知
 - 這是一個32bit的Linux執行檔 (32-bit LSB executable)
 - 可以在intel 80386的硬體環境下執行 (Intel 80386)
 - 使用動態的library (dynamically linked (uses shared libs))
 - 在linux 2.6.32的作業系統上 (GNU/Linux 2.6.32)
 - 還沒有stripped (可以用 strip的指令去除一些debug的資訊,讓檔案變小[4642 --> 3000])

如果想要看一下這個檔案用到哪些的動態library
而且可以看出這些dynamic library之間的相依性
# ldd test
    linux-gate.so.1 =>  (0x00614000)
    libc.so.6 => /lib/libc.so.6 (0x00697000)
    /lib/ld-linux.so.2 (0x00676000)
可以知道有用到兩個函式庫 :
  - libc.so.6 : 標準C函式庫
  - ld-linux.so.2 : 提供基本的library給其他的library,這個library為static library

那如果我們要用靜態的函式庫要如何做呢?
很簡單,在compile的時候加入-static的參數
# gcc -static main.c -o test_static
這時test_static的檔案大小就會飆升到632124

這是用file去看這個檔案的資訊就會變成statically linked
# file test_static
test_static: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.32, not stripped
這個檔案就無法使用ldd的指令了
因為沒有連結動態的函式庫

2013/05/31

IPv6系列文


經過了大約一年半的時間
我才慢慢的把IPv6的文章給補齊
以下分門別類介紹一下我的文章

● 要做IPv6的初學者會先建議看以下兩篇
  - IPv6 :  對IPv6做個簡單介紹
  - IPv6...ICMP : 一些IPv6實作的表格與行為,有需要再深入了解

● 若是想針對Linux上面如何操作
  ----- 基礎篇 -----
  - 設定IPv6 : 教您如何將IPv6的網路建置起來
  - Stateless auto configuration : 如何建置IPv6的router
  - Stateful auto configuration : 如何建議IPv6的DHCP server
  ----- 服務篇 -----
  - Telnet : 如何啟用IPv6 telnet server
  - Web :  如何連接WWW
  - SNMP :  如何建置與使用SNMP server
  - NTP : 如何建置ntp server
  - TFTP : 如何建置tftp server
  - Email :  如何建置mail server

● 如果您對IPv6 ready logo有興趣,可以參考下面的文章
  - Core測試流程 : 整體的測試流程
  - Core符合性測試 : 如何手動操作測試
  - Core符合性測試 (除錯) : 如果發現問題該如何解決
  - Core符合性測試 (自動) : 如何改為自動測試
  - Core互連性測試 : 到了中華電信研究所要測試的項目
  - 金牌與銀牌的差別 : Phase-1與Phase-2的差異

還有興趣的人可以參考我之前分享的投影片


【Linux】IPv6 Mail Server


這邊使用的Mail Server是Postfix

● Server
# yum install postfix
# yum remove sendmail
# vim /etc/postfix/main.cf
 myhostname = guider.com
 myorigin = $myhostname
 inet_interfaces = all
 inet_protocaols = all
# /etc/init.d/postfix start
# netstat -tlunp |grep :25

● Client
# vim /etc/hosts
 3ffe:1:2::1 ipv6.server
# vim /tmp/test
 testing ipv6
 EOF
# mailx -S verbose -S from=eki-1322 -S smtp=ipv6.server –s mailtest test@test.com < /tmp/test

要知道有沒有收到呢?
可以在server裡面輸入以下的指令,來看有沒有收到信件
# postqueue –p 


【Linux】IPv6 TFTP Server


這篇說明了簡易架設TFTP server的作法

● Server
# yum install tftp-server
# vim /etc/xinet.d/tftp
 disable = no
 flag = IPv6
# /sbin/chkconfig tftp on
# /sbin/chkconfig xinetd on
# /sbin/service xinetd start


● Client
# tftp 3ffe:1:2::1

【Linux】IPv6 NTP Server


要如何建置IPv6的NTP server
而且不需要對外去做更新時間的動作呢?

● Server
# yum install ntp
# vim /etc/ntp.conf
 restrict -6 default kod nomodify notrap nopeer noquery
 restrict -6 ::1
 restrict -6 fe80::0 mask 64 nomodify
 restrict -6 3ffe:1:2::0 mask 64
 server 127.127.1.0
 fudge 127.127.1.0 stratum 8
# /etc/init.d/ntpd start
# chkconfig ntpd on
# netstat –tlunp |grep ntp

● Client
# date 12121212
# date
# ntpdate 3ffe:1:2::1
# date

2013/03/07

【Linux】IPv6 SNMP Server


這邊要介紹如何安裝IPv6的SNMP agent在server上
以及要如何利用SNMP去query的資訊


● Server
# yum install net-snmp net-snmp-utils

● Client
# snmpget -v 1 -c public udp6:[3ffe:1:2::1]:161 1.3.6.1.2.1.1.3.0
# snmpwalk -v 1 -c public udp6:[3ffe:1:2::1]:161 1.3.6.1.2.1.1

第一個指令會拿回到開機到現在的時間
第二個指令則會掃出全部MIB的資訊 (會需要一點時間)

2013/03/03

【Linux】IPv6 Telnet Server


要如何將一般的telnet server變成IPv6的telnet server呢?
其實很簡單,只要安裝好telnet server的軟體就可以了

● Server
# yum install telnet-server
# chkconfig telnet on

● PC
# telnet 3ffe:1:2::1

如果無法連線,請記得確認ip6tables防火牆的狀態或是關閉它。

2012/09/13

How to build Linux Kernel ...


跟著下面的步驟就可以輕鬆的將linux kernel給build出來啦 ~

1. 安裝SRPM, kernel-.sec.rpm以及產生kernel source
# yum install fedora-rpmdevtools
# fedora-buildrpmtree
# yum install yum-utils
# yumdownloader --source kernel
# rpm -ivh kernel-.src.rpm
# cd /rpmbuild
# rpmbuild -bp --target $(uname -m) kernel-2.6.spec

2. 更改kernel的版本
# cd /rpmbuild/BUILD/kernel-/linux-
# vi Makefile
    ...
    EXTRAVERSION = XXX (改成自己能識別的名稱)
    ...

3. 清除config file以及用預設的config file
# make mrproper
# cp /boot/config- .config
# make oldconfig
# make clean

4. 建立新的kernel與安裝kernel
# make bzImage modules modules_install
# make install

5. 將新的kernel設為預設的開機kernel
# vi /boot/grub/grub.conf
    ...
    default=0
    ...

6. 重新開機並確認版本
# reboot
# uname -a

2012/03/03

【Linux】IPv6 Stateful Auto Configuration

在上一篇我有提到IPv6有另一種自動設定IP的方式

● Stateful
透過DHCP server所給的網路位址 + EUI-64所產生出的網卡位址
看DHCP server的設定,有時也會給定全部的位址而不用網卡位址
 


基本上跟IPv4獲得IP的方式雷同
但是IPv6的DHCP Server可以選擇要只給網路位址或給全部的位址
既然已經有了router給網路位址的作法
為什麼還要出現一個DHCPv6的功能呢?
這樣來說MIS可以更方便的管理設備
反正網址這麼多, 一台設備又可以有很多的IP
所以就沒差了...

下面的範例Server可以送IPv6的address給PC




● Server
# yum remove dhclinet
# yum install dhcp
# vi /etc/dhcp/dhcpd6.conf
    option dhcp6.rapid-commit;
    default-lease-time 120;                  
    ddns-update-style interim;
    ddns-domainname example.com";      
    authoritative;                                    
    subnet6 2011:1:2::/48 {
        range6 2011:1:2::129 2011:1:2::254;
        option dhcp6.name-servers 2011:1:2::2012;
        option dhcp6.domain-serach "ipv6.domain.example";
    }
# ifconfig eth0 inet6 add 2011:1:2::123/48
# service dhcpd6 start

● PC
# dhclient -6 eth0
# ifconfig

透過上面的設定PC就可以拿到IPv6的網路位址
會介於2011:1:2::129到2011:1:2::254之間

2012/02/24

【Linux】IPv6 Stateless Auto Configuration


之前在IPv6那篇文章中有提到
有兩個自動設定IP的方式

● Stateless
網路的位址是由 router所給的 + EUI-64所產生出的網卡位址,
這樣就是一個完整的IPv6 address

● Stateful
透過DHCP server所給的網路位址 + EUI-64所產生出的網卡位址
,看DHCP server的設定,有時也會給定全部的位址而不用網卡位址


這篇先介紹如何將Linux的設備變成IPv6 Router
可以送出IPv6的網路位址
讓PC可以收到IPv6的網路位址再加上自己的MAC自動產生IPv6的IP


Linux Server這邊要安裝radvd這套軟體
這套軟體可以發送Network address並且做IPv6的Routing

● Server
# yum install radvd
# vi /etc/radvd.conf
interface eth0
{
    AdvSendAdvert     on;
    MinRtrAdvInterval   3;
    MaxRtrAdvInternal 10;
    prefix 2001:db8:0:f101::/64
    {
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr on;
    };
};
# echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
# echo 1 > /proc/sys/net/ipv6/conf/default/forwarding
# vi /etc/sysconfig/network
NETWORKING_IPV6=yes
# service radvd start


接這就可以用 # ifconfig 去看到新的IPv6 address (2001:db8:0:f101::interface address)
● PC
# ifconfig




2012/02/23

【Linux】設定IPv6


最近的工作有設定到一些IPv6的相關功能
寫下來做個紀錄
順便跟大家分享一下

這兩台都是Linux的設備
一開始要先將IPv4與IPv6設定好,之後才可以用ping的方式看看有沒有連起來

● PC
# ifconfig eth0 192.168.1.2                      
# ifconfig eth0 inet6 add 3ff1:1:2::2/64               
# service iptables stop                              
# service ip6tables stop                            

● Server
# ifconfig eth0 192.168.1.1                             
# ifconfig eth0 inet6 add 3ff1:1:2::1/64                
# service iptables stop                                 
# service ip6tables stop                                

接下來就可以ping看看有沒有連起來
● PC
# ping 192.168.1.1                             
# ping6 -I eth0 3ffe:1:2::1

● Server
# ping 192.168.1.2
# ping6 -I eth0 3ffe:1:2::2

2008/10/03

Unix Ksh常用快速鍵...


在linux的世界裡
bash是大家最常用的shell
那小的我因為follow強者主管的關係
也學了一些ksh的快速鍵
分享給大家...

◎命令補齊:ESC*2
◎上一個指令:Ctrl+p
◎下一個指令:Ctrl+n
◎在輸入指令中向左移:Ctrl+b
◎在輸入指令中向右移:Ctrl+f

ㄟ...想不到了...想到在補充好了...