İçindekiler:

Orange PI Nasıl Yapılır: Windows Altında Windows için Sunxi Aracı Derleme: 14 Adım (Resimlerle)
Orange PI Nasıl Yapılır: Windows Altında Windows için Sunxi Aracı Derleme: 14 Adım (Resimlerle)

Video: Orange PI Nasıl Yapılır: Windows Altında Windows için Sunxi Aracı Derleme: 14 Adım (Resimlerle)

Video: Orange PI Nasıl Yapılır: Windows Altında Windows için Sunxi Aracı Derleme: 14 Adım (Resimlerle)
Video: Hyphop/miZy Tiny Embedded Linux İnstalling on OrangePi-R1[TR] 2024, Kasım
Anonim
Orange PI Nasıl Yapılır: Windows Altında Windows için Sunxi Aracını Derleyin
Orange PI Nasıl Yapılır: Windows Altında Windows için Sunxi Aracını Derleyin

ÖNKOŞULLAR:

İhtiyacın olacak

  1. Windows çalıştıran bir (masaüstü) bilgisayar.
  2. İnternet bağlantısı.
  3. Turuncu bir PI kartı.

Sonuncusu isteğe bağlıdır, ama eminim ki zaten sizde var. Aksi takdirde, bu talimatı okumayacaksınız.

Orange PI tek kartlı bilgisayarı satın aldığınızda, düzgün bir şekilde yapılandırılana kadar sadece bir ölü metal parçası olarak kalır. Ve ana yapılandırma dosyası: "script.bin" onu canlandıran ilk anahtardır. Bu dosya, önyüklenebilir SD kartınızın önyükleme bölümünde bulunur. Şansımıza, Resmi sitedeki (https://www.orangepi.org/downloadresources/) Linux dağıtımlarının çoğunda bu bölüm FAT32'dir ve herhangi bir Windows bilgisayar tarafından kolayca görülebilir. Windows altından Linux ext2 bölümlerine yazmanın hala güvenilir bir yolu olmadığından, işleri gerçekten basitleştirir.

Şansımıza, script.bin yapılandırma dosyası, insan düzenlemesi için tamamen uygun olmayan ikili formata sahiptir. Şifresini çözmek ve gerekli değişiklikler yapıldıktan sonra geri şifrelemek için bir tür yazılım aracına ihtiyaç vardır. Ve böyle bir araç seti var. Kötü şöhretli SUNXI-TOOLS'tur. Merhemdeki sinek, Linux altında çalışacak şekilde tasarlanmasıdır ve ya sadece sunxi araçlarını kullanmak için özel bir Linux makinesi tutmamız ya da onları pencereler için derlemenin bir yolunu bulmamız gerekir.

Basitçe derleyebilir ve yürütülebilir dosyayı paylaşabilirim, ancak yeni bir sürüm yapmak isteyip istemediklerini asla bilemezsiniz ve en kısa sürede yeni bir derlemeye ihtiyacınız olacak. Bu yüzden, temel aracı kaynaklardan nasıl derleyeceğimize dair bir rehber yapmaya karar verdim. Başlayalım.

Adım 1: Sunxi araçlarını indirin

Sunxi araçlarını indirin
Sunxi araçlarını indirin
Sunxi araçlarını indirin
Sunxi araçlarını indirin

sunxi-tools kaynak kodunun en son (veya gerekli) sürümünü edinin. URL'ye gidin: https://github.com/linux-sunxi/sunxi-tools/releases ve zip arşivi olarak indirmeyi seçin.

2. Adım: Kaynak Kodu Açın

Kaynak Kodu Açın
Kaynak Kodu Açın

İndirme işlemi bittiğinde, kaynak kodunu seçtiğiniz klasöre açın. (ayrıca bu klasörün c:\sunxitools\ olduğunu varsayacağım, bu yüzden bu yolu kendi yolunuzla değiştirin).

Adım 3: Code::blocks'u İndirin

İndirme Kodu::blocks
İndirme Kodu::blocks

Windows için bazı operasyonel c++ derleyicilerinin kurulu bir kopyasına sahipseniz. ve nasıl kullanılacağını biliyorsanız, doğrudan 3. adıma geçebilirsiniz. Diğerleri uygun bir c++ derleyicisi ve onu rahatça kullanmak için bir kabuk (IDE) almalıdır. Benim seçimim, önceden yüklenmiş MinGW araç zinciriyle birlikte Windows için code::blocks. Buradan alabilirsiniz:https://sourceforge.net/…/codeblocks-16.01mingw-setup.exe/download

İndirin ve kurun.

4. Adım: IDE'nizi Test Edin

IDE'nizi Test Edin
IDE'nizi Test Edin

İşlerin yolunda gidip gitmediğini test etmek için kod bloklarını başlatın, "yeni proje oluştur"u tıklayın, "konsol uygulaması"nı seçin, c veya c++'ı seçin, ödeme projesinin başlığını yazın, bir sonraki pencerede varsayılanlara dokunmadan bırakın ve "bitir"e tıklayın ".

Adım 5: Testi Tamamlayın

Testi Tamamla
Testi Tamamla

Ardından IDE'nin üst panelindeki yeşil üçgene tıklayın veya Build->Run menü noktasını kullanın. İşler yolunda giderse, siyah "DOS" penceresinde otomatik olarak oluşturulmuş "Merhaba dünya" uygulamanızdan bir mesaj görmelisiniz.

Değilse, IDE ve derleyici düzgün çalışmıyor demektir ve nasıl doğru ayarlayacağınızı araştırmanız gerekecektir. Muhtemelen programlama araçlarının başka bir sürümünü indirmeniz veya güvenlik duvarı/antivirüs yazılımınızdaki izinlerini kontrol etmeniz gerekecektir.

Adım 6: Yeni Proje Oluşturun

Yeni Proje Oluştur
Yeni Proje Oluştur
Yeni Proje Oluştur
Yeni Proje Oluştur
Yeni Proje Oluştur
Yeni Proje Oluştur
Yeni Proje Oluştur
Yeni Proje Oluştur

Şimdi, bilgisayarınızdaki c:\sunxitools\ klasöründe çalışan bir C/C++ programcı araç takımına ve paketlenmemiş sunxi-tools kaynak kodlarına sahip olmalısınız. Bir projeyi birleştirme zamanı. IDE'nizde yeni proje oluşturun. "Konsol uygulaması" türündeki düz C (c++ değil) projesini seçin.

Projeyi başka bir yerde değil, c:\sunxitools\ klasöründe oluşturduğunuzdan emin olun. (EG kod blokları, proje ile aynı ada sahip bir alt klasör oluşturma eğilimindedir. Bu nedenle, projenize bir isim verdiyseniz, "test" deyin ve onu c:\sunxitools\ içine yerleştirmeyi deneyin, sonunda proje gitmiş olabilir. Yeterince dikkatli değilseniz c:\sunxitools\test\ için.) Sunxi-tools birkaç yardımcı program içerir, ancak bizim amacımız için sadece bir tanesine ihtiyacımız olacak: "fexc" yardımcı programı.

7. Adım: Dosyaları Projeye Ekleyin

Projeye Dosya Ekle
Projeye Dosya Ekle

Tam olarak "fexc" yardımcı programı, script.bin dosyasının metin biçimine dönüştürülmesinden ve ikiliye geri dönüştürülmesinden sorumludur. Bu yardımcı programın yürütülebilir dosyasının "fexc.exe" adına sahip olması esastır, bu nedenle projenizi "fexc" olarak adlandırdıysanız iyi olur. Ancak, derlemeden sonra yürütülebilir dosyayı her zaman yeniden adlandırabileceğiniz için projenin başka bir adını kullanabilirsiniz veya üst açılır menüden "Proje->Özellikler"i seçebilir ve görünen pencerede "Yapı hedefleri" sekmesine tıklayabilirsiniz, ve yürütülebilir adı geçersiz kılmak için oradaki "Çıktı dosyası adı" alanını düzenleyin.

Otomatik oluşturulan projenize yalnızca beş kaynak dosya eklemelisiniz:

  • fexc.c
  • script.c
  • script_bin.c
  • script_fex.c
  • script_uboot.c

ve yedi başlık dosyası:

  • list.h (c:\sunxitools\include\ klasöründen c:\sunxitools\ klasörüne taşıyın)
  • fexc.h
  • script.h
  • script_bin.h
  • script_fex.h
  • script_uboot.h
  • sürüm.h

Fexc.c'de zaten "int main" işlevi bulunduğundan, otomatik olarak oluşturulmuş main.c'yi projeden çıkardığınızdan emin olun. (Herhangi bir programın yalnızca bir ana işlevi olması gerektiğini unutmayın?).

Gerekli tüm kaynak kod dosyaları, kaynak kodlarını açtığınız alt klasörde zaten bulunmaktadır. Başlık dosyaları, onları nereden alacağınız bir çift kelimeyi hak ediyor. "list.h" - genellikle paketlenmemiş kaynak kodları kümesinin "include" alt klasöründedir. "version.h" - sadece Kendiniz oluşturun. Oraya şöyle bir dize koyun:

#define VERSİYONU "Win32"

Ardından dosyayı kaydedip kapatın. (İsterseniz #define'ler ve #ifdef'ler ile süsleyebilirsiniz.)

Şimdi projeyi derlemeye çalışırsanız, birçok hatadan ve bir eksik dosyadan şikayet edecektir. Hatalar çoğunlukla biraz aşırı stil özgürlüğünden, eskiden sunxi-tools programcılarının uyguladığı ve eksik dosya, kaynak kodu paketine dahil edilmeyen bağımlılıktan kaynaklanıyor. Bunu adım adım ele alalım.

8. Adım: Gcc'nin 1999 ISO C Dil Standardını İzlemesini Sağlayın

Gcc'nin 1999 ISO C Dil Standardını İzlemesini Sağlayın
Gcc'nin 1999 ISO C Dil Standardını İzlemesini Sağlayın

Derleyicinin şikayet etmemesi için çok özgür programlama stili derlemenin "с99" standardını belirler. Kod bloklarında "Proje -> Yapı Seçenekleri" menüsüne gidin ve "Derleyici Ayarları -> Derleyici Bayrakları"nda "Gcc'nin 1999 ISO C dil standardını izlemesini sağlayın" onay kutusunu işaretleyin. Ya da derleyici seçeneklerinize "-std=c99" ekleyebilirsiniz. Şimdi projeyi derlemeye çalışırsanız bu tonlarca hata gitmiş olmalı ve eksik bağımlılıkla bire birsiniz.

9. Adım: Eksik Bağımlılığı Bulun

Eksik Bağımlılığı Bulun
Eksik Bağımlılığı Bulun

Eksik bağımlılık "mman.h" dosyasıdır - bir tür linux bellek yöneticisinin başlığı. Windows C'nin doğal olarak böyle bir dosyası yoktur, ancak neyse ki bir Windows bağlantı noktası vardır. Windows için https://github.com/witwall/mman-win32 adresine gidin. Git deposunun anlık görüntüsünü indirin.

Adım 10: Mman'i paketinden çıkarın

Mman'ı paketinden çıkarın
Mman'ı paketinden çıkarın

mman.c ve mman.h dosyalarını paketinden çıkarın, bunları c:\sunxitools\ klasörüne yerleştirin.

Adım 11: Ve Onları Projeye Ekleyin

Ve Projeye Ekleyin
Ve Projeye Ekleyin

Adım 12: Doğru Yol

Doğru Yol
Doğru Yol

Ve "fex.c" dosyasında raplece satırı:

#Dahil etmek

için

#include "mman.h"

Bu adımda derleyiciniz hiçbir şeyden şikayet etmemelidir ve çıktı olarak uzun süre bekleyen fexc.exe'yi alacaksınız. Erken sevinme. Yardımcı program hala tam olarak işlevsel değil. Bunu, bazı geçerli script.bin dosyalarının şifresini metin biçiminde çözerek sağlayabilirsiniz - script.fex dosyası ve ardından script.fex dosyasını tekrar script.bin'e şifreleyerek. Ortaya çıkan script.bin boyutunun orijinal script.bin boyutundan biraz farklı olduğunu not edebilirsiniz. Ve sonucun şifresini bir kez daha çözmeye çalışırsanız, başarısız olur. Orange PI de bu script.bin ile çalışmayacaktır. İşlevsel faydayı elde etmek için, birinin sunxi-tools kaynak koduna koyduğu bir kod bombasını boşaltmamız gerekiyor. Bir sonraki adımımız olacak.

Adım 13: Şeytan Çıkarma

Şeytan çıkarma
Şeytan çıkarma

Kod bombasını boşaltmak için fexc.c kod dosyasını açın ve orada bir sonraki içeriğin metin dizesini bulun:

else if ((out = open(dosya adı, O_WRONLY|O_CREAT|O_TRUNC, 0666)) < 0) {

Sadece bir sonraki dizeyle değiştirin:

else if ((out = open(dosya adı, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, 512)<0){

İlk dizgedeki kötü rakamlar "666" değilse, kodlayıcının O_BINARY bayrağını kullanmayı unuttuğunu düşünürdüm. Ancak Canavarın Sayısı, niyetlerini şeffaf bir şekilde açıklıyor. Bir düşünün, ne kadar ustaca: Windows ve Linux'ta dosyaların işlenme biçimindeki ince fark nedeniyle, yardımcı program Linux altında derlendiğinde ve kullanıldığında bombanın hiçbir etkisi yoktur. Ancak yardımcı program Windows altında kullanıldığında her şeyi mahveder.

Bomba etkisiz hale getirildikten sonra, nihayet Windows masaüstü bilgisayarınızda fexc yardımcı programını derleyebilir ve güvenle kullanabilirsiniz.

Adım 14: NOTLAR

NOTLAR
NOTLAR

1) fexc yardımcı programını rahatça kullanmak için iki toplu iş dosyası almalısınız:

bin2fex.bat - ve - fex2bin.bat.

Bunları Windows için bazı başarısız fexc.exe derlemelerinden alabilir veya Kendiniz yazabilirsiniz:

  • bin2fex.bat "fexc -I bin -O fex script.bin script.fex" içermelidir
  • fex2bin.bat "fexc -O bin -I fex script.fex script.bin" içermelidir

2) Windows için mman yöneticisini bulmak zorsa, kullanımından tamamen kaçınılabilir. Ancak fexc.c dosyasının düzenlenmesi çok daha fazla zaman alır ve en azından biraz c bilgisi gerektirir. Rahatlığınız için, mman.h bağımlılığından bağımsız sunxi-tools v1.4'ten fexc'nin düzenlenmiş kaynak kodunu, codeblocks proje dosyası ve bazı turuncu pi'lerden örnek script.bin ile paylaşıyorum. fexc_nomman.zip dosyasını indirebilirsiniz

3) Sunxi araçlarının sonraki sürümlerinde biraz daha bağımlılık eklemeleri mümkündür. Bunları internet üzerinden bulmaktan ve derleme projenize eklemekten çekinmeyin.

5) Son olarak, Win32 için fexc.exe'nin önceden derlenmiş sürümü:

fexc_nomman.zip

Yeterince tembelseniz ver kullanmaktan çekinmeyin. Ancak, SunxiTools/Windows'un daha yeni sürümleri mevcut olduğunda/olduğunda güncellenmeyeceğine dikkat edin. Bu yüzden, bazı sabit ikili yapılara bağımlı olmaktansa, onları nasıl derleyeceğinizi öğrenmek daha iyidir, sanırım.

4) "Orange PI", "Code::Blocks", "Windows", "Linux", "Sunxi-Tools", "Allwinner" vb… ilgili sahiplerinin ticari markalarıdır.

5) Derleyici, aşağıdaki gibi mman işlevlerini bulamamaktan şikayet ederse:

'_imp_mmap' için tanımsız başvuru

Bilin ki mman geliştirme camiasını sevenler, kodun sadece dll kütüphanesi olarak derlenebileceğini unuttular. Ayrıca statik bir kitaplık veya burada sahip olduğumuz gibi bağımsız bir kod olabilir. Sorunu çözmek için "mman.h" dosyasını aşağıdaki gibi düzenleyin:

a) dizeleri bulun:

#if tanımlı(MMAN_LIBRARY)

#define MMANSHARED_EXPORT _declspec(dllexport) #else #define MMANSHARED_EXPORT _declspec(dllimport) #endif

b) dizeyi ekleyin

#define MMANSHARED_EXPORT

önceki adımda bulunan dizelerin hemen altında

Önerilen: